c语言 请读程序: int x=10; int y=x++; printf("%d,%d",(x++,y),y++); 则上面程序的输出结果是___

'请读程序:
int x=10;
int y=x++;
printf("%d,%d",(x++,y),y++);
则上面程序的输出结果是____
A:11,10 B:11,11 C:10,10 D:10,11
答案是a 我选的c
win-tc环境 确实是a

你选的是对的,答案就是C,当执行到y=x++时,因为y=x++是先运算后自加,所以y的值是10,此时x值后加变成了11,当执行printf()函数时,因为printf()函数运算是从最后运算的,所以首先运算的是y++,因为y++还是后加加,所以y的值还是10,在运算y,所以第二个输出的结果还是10,因为题中的printf()函数输出的只有两个结果,所以x++是不运算的,ok,完了追问

程序运行的答案是a啊

追答

我运行的就是C,绝对没问题

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-27
c是正确答案
因为int y=x++之后,y=10,x=11
(x++,y)输出y,y=10
然后y++,先输出y=10,然后y才为11
所以答案是10,10
如果再加上printf("%d",y),会显示为11

所以,你的选择是正确的追问

程序运行的答案是a啊

追答

不,我运行的答案是C,绝对是C

本回答被提问者和网友采纳
第2个回答  2020-05-21
printf先算后面的y++,先输出10然后再自加,这时y=11,括号表达式返回的值是最后那个,这时返回11,所以输出11,10
第3个回答  2020-03-09
因为printf是从右开始运算的 所以先算y++ 然后再算逗号里面的
第4个回答  2011-08-27
x y 操作
10 - int x=10
11 10 int y=x++
后面的就没影响了。直接输出了追问

逗号表达式不是总是显示最后一个表达式的值么?所以第一个输出的应该是y不是么?

追答

是C,看错了

相似回答