答案是90.但这是什么逻辑? 如果我写这个j =(4,5); 然后回答是5.
#include<stdio.h>
void main()
{
int j;
j=(4,5,90);
printf("%d\n",j);
}
答案 0 :(得分:8)
您正在使用comma operator:
在C和C ++编程语言中,逗号运算符(由标记表示)是一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回该值(和类型)。
请注意,这与分隔函数参数的逗号不同。
a = 1, 2, 3;
^ ^
| |
comma operators
a = foo(1, 2, 3);
^ ^
| |
separators
对于您的代码,这意味着所有发生的事情都是逐个评估表达式4
,5
和90
,结果是最后一个结果表达,即90
。
括号只是括号,它们不会以任何方式影响结果。
const int j = (4, 5, 90);
与:
相同const int j = 4, 5, 90;
或者,就此而言:
const int j = (4), (5), (90);
正如我在上面链接的维基百科页面上所指出的那样,从上面可以看出,逗号运算符很少有用。它可以被欺骗用于各种不明显的目的(参见this page for examples),但做一些模糊的事情很少是一场胜利。