一道c语言题,请大家来看下

来源:百度知道 编辑:UC知道 时间:2024/06/28 12:33:53
已知int a=1,b=-1;则语句printf("%d\n",(a--,++b));的输出结果是
A)-1
B)0
C)1
D)语句错误
正确答案: B
系统给的答案是B,我想是D,为什么选B呢,请大家指教下,麻烦说详细点,谢谢

其实输出应该是(a--,++b)这个逗号表达式的值,而逗号表达式的值就等于其最后一项的值(这个是C和C++中的规定),所以应该就是++b的值,自然就选B了。
++x等价于x+=1
x++等价于(t=x,x+=1,t) 这里t是临时变量。

(a--,++b)
是逗号表达式,合法的呀
逗号表达式的值是逗号后面部分的值,就是++b了,自然答案就是0了