变量赋值和逗号运算符

时间:2016-12-28 07:24:30

标签: c++ c visual-c++

有人可以帮我解释一下:

int a, b, c, d;
a = 2;
b = 4;
c = a, b;
d = (a, b);

为什么c == 2d == 4 ???

1 个答案:

答案 0 :(得分:5)

这两个陈述都被评估为

c = a;
d = b;

由于逗号运算符(任何运算符的优先级最低)在C和C ++中的运行方式。

对于第一个,首先评估c = a(因为=具有比逗号运算符更高的优先级),然后评估b(这是一个无操作)。 整个表达式的值为b,但未分配给任何内容。

对于d = (a, b);,由于括号,首先评估(a, b)。其值为b,并已分配给d