-3

答案是 90。但这样做的逻辑是什么?如果我写这个 j=(4,5); 那么答案是 5。

    #include<stdio.h>
    void main()
    {
        int j;
        j=(4,5,90);
        printf("%d\n",j);
    }
4

1 回答 1

8

您正在使用逗号运算符

在 C 和 C++ 编程语言中,逗号运算符(由记号 , 表示)是一个二元运算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。

请注意,这与分隔函数参数的逗号不同。

a = 1, 2, 3;
     ^  ^
     |  |
  comma operators

a = foo(1, 2, 3);
         ^  ^
         |  |
      separators

对于您的代码,这意味着所发生的只是表达式4,590被逐一评估,其结果是最后一个表达式的结果,即90.

括号只是括号,它们不会以任何方式影响结果。

const int j = (4, 5, 90);

是相同的:

const int j = 4, 5, 90;

或者,就此而言:

const int j = (4), (5), (90);

正如我链接到的维基百科页面上所指出的,并且从上面应该很明显,逗号运算符很少有用。它可以被欺骗以用于各种不为人知的目的(请参阅此页面以获取示例),但做不知名的事情很少是胜利。

于 2013-02-13T10:04:48.723 回答