第1个回答 2019-12-30
d=(d=9+e,e++,e+9)
这样的话,用gcc编译器d就是打印10
如果单单是d=9+e,e++,e+9,赋值运算符优先级大于逗号,相当于 (d=9+e),e++,e+9,从左到右算,d=9,e=1,e+9=10,但是这隐藏了一个临时变量 比如x, x=1+9=10,但是你没有接收这个10,于是就被丢掉了,如果像我第一行那样,这个10就会被接收本回答被提问者采纳
第2个回答 2019-12-30
逗号运算不是这么看的。计算时,从左向右,分别计算每个以逗号分隔开的表达式,最后一个表达式就是这个逗号表达式的最终结果。如d=9+e,e++,e+9 等价于3个式子:
d = 9 + e;
e++;
e+9;
e的初始值是0,所以d = 9 + e = 9 + 0 = 9。e++,所以e = 0++ = 1。至于最后的e+9,是“整个”逗号表达式的值,只不过不影响d和e的最终值