int x=1,y=2; printf("%d",x+y,x++,y++); 为什么得的值是5,而不是2或者3.

还有为什么x,y要先自增?
2025-06-12 11:51:08
推荐回答(5个)
回答1:

pirntf函数中的表达式的结合顺序是由右向左,所以先算y++,再算x++,最后算x+y,因为只有一个%d,所以输出对应的x+y的值为5

回答2:

标准C编译器的话,应该是3,x++、y++是在所在语句执行完后再+1的,
即使是printf("%d",x+y,++x,++y);结果也为3,因为执行顺序是从左至右,运算x+y时,xy还没自加
不知道你用的什么编译器,是哪种C

回答3:

这可不一定是5,通常是3。请看:

回答4:

vc++6.0运行结果是3
以前回答过这样一个帖子,有空的话去看下。

回答5:

这个主要看编译器编译顺序的问题
你看下这个问题就明白了:http://zhidao.baidu.com/question/361882053.html?oldq=1