为什么分配值3?编译器是否只是从列表中取出最后一个值?
int a;
a=(1,2,3);
printf("%d",a);
编译器如何解析此语句或内部如何工作?
答案 0 :(得分:1)
(1,2,3)
中的逗号是逗号运算符。评估为
a = ( (1,2) ,3 );
逗号运算符是左关联的。表达式(1,2,3)
的结果/值是逗号运算符的右操作数的值。
答案 1 :(得分:0)
正如评论中所指出的,这是因为你正在使用comma operator。这意味着评估并丢弃1和2。这三个是唯一剩下的东西。没有括号,它很可能被指定为1。