C中的变量定义

时间:2011-07-15 18:57:14

标签: c variables declaration

以下声明在C中意味着什么?

char a = (10,23,21);

使用“%u”打印“a”的值时,输出为21。 gcc没有给出任何错误。 什么是这种声明以及它的用途是什么?

2 个答案:

答案 0 :(得分:7)

您正在看到逗号运算符正在运行。逗号运算符a,b评估a,抛弃结果,然后返回b

由于1023没有副作用,因此相当于char a = 21;

答案 1 :(得分:3)

这是标量逗号运算符的用法。逗号运算符计算左侧的每个表达式并抛弃返回值,最后返回最右边的值。

在这种情况下,它没用;但是,如果你将它与带有副作用的表达一起使用,那么它就会产生真正的效果。

半“有用”表达的实例(具有副作用):

int a = 10;
int is_a_odd_after_increment = ++a, a % 2;

第一个表达式(++a)具有明显的副作用,并且首先评估它(在a % 2之前)。第二个表达式是赋值给赋值的表达式。