腾讯游戏平台手机版下载安装:结果为0 0 5,那程序是怎么得到的?请帮我详细的回答一下

来源:百度文库 编辑:高校问答 时间:2024/04/28 07:15:04
main()
{int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf("%d,%d,%d",a,b,c);
那为什么c不等于(a=b,b+3)的值了???

初始值a,b,c都是0
a-=a-5 此句等价于a-=(a-5) 等价于a=a-(a-5),所以此句完成后a=5,接着又把a的值给了c,所以c=5
a=b此句执行后a=0
接着是b+3,此句表达式结果虽为3但是并没有改变b的值,即仍然有b=0
所以最后结果是0 0 5

c=(a-=a-5),(a=b,b+3); 中间不是有个逗号嘛!再说(a=b,b+3)是两个表达式,放在一起还是两个表达式,不能把它的值赋予别的变量

同意楼上