int main()
{
int a = 0, b = 0, c = 0;
c = (a += a -= 5), (a = b, b + 3);
printf("%d,%d,%d\n", a, b, c);
}
编译结果
0,0,-10
主要是对于a值的运算。
a = 0
(a += a -= 5)
a+=(a=a-5)=>a=-5
a+=-5 => a=-5+(-5)=-10
因为逗号运算符的优先级要低于等于号,后面括号的运算不会赋值给c,所以想要结果为后面的括号值,得再加上一个括号把两个括起来,像这样:
c = ((a += a -= 5), (a = b, b + 3));
这样最后的编译结果就是
0,0,3