有人可以帮我解释一下:
int a, b, c, d;
a = 2;
b = 4;
c = a, b;
d = (a, b);
为什么c == 2
和d == 4
???
答案 0 :(得分:5)
这两个陈述都被评估为
c = a;
d = b;
由于逗号运算符(任何运算符的优先级最低)在C和C ++中的运行方式。
对于第一个,首先评估c = a
(因为=
具有比逗号运算符更高的优先级),然后评估b
(这是一个无操作)。 整个表达式的值为b
,但未分配给任何内容。
对于d = (a, b);
,由于括号,首先评估(a, b)
。其值为b
,并已分配给d
。