变量赋值和逗号运算符

Trầ*_*hát -1 c c++ visual-c++

任何人都可以帮我解释一下:

int a, b, c, d;
a = 2;
b = 4;
c = a, b;
d = (a, b);
Run Code Online (Sandbox Code Playgroud)

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

Bat*_*eba 6

这两个陈述都被评估为

c = a;
d = b;
Run Code Online (Sandbox Code Playgroud)

由于逗号运算符(具有任何运算符的最低优先级)如何在C和C++中工作.

对于第一个,c = a首先进行评估(=具有比逗号运算符更高的优先级)然后b评估(这是一个无操作).将整个表达式有一个值b,但是,这不是分配给什么.

因为括号d = (a, b);,(a, b)首先评估.这有一个值b,并分配给d.