以下声明在C中意味着什么?
char a = (10,23,21);
使用“%u”打印“a”的值时,输出为21。
gcc
没有给出任何错误。
什么是这种声明以及它的用途是什么?
答案 0 :(得分:7)
您正在看到逗号运算符正在运行。逗号运算符a,b
评估a
,抛弃结果,然后返回b
。
由于10
和23
没有副作用,因此相当于char a = 21;
答案 1 :(得分:3)
这是标量逗号运算符的用法。逗号运算符计算左侧的每个表达式并抛弃返回值,最后返回最右边的值。
在这种情况下,它没用;但是,如果你将它与带有副作用的表达一起使用,那么它就会产生真正的效果。
半“有用”表达的实例(具有副作用):
int a = 10;
int is_a_odd_after_increment = ++a, a % 2;
第一个表达式(++a
)具有明显的副作用,并且首先评估它(在a % 2
之前)。第二个表达式是赋值给赋值的表达式。