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

还有为什么x,y要先自增?

pirntf函数中的表达式的结合顺序是由右向左,所以先算y++,再算x++,最后算x+y,因为只有一个%d,所以输出对应的x+y的值为5
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-08
标准C编译器的话,应该是3,x++、y++是在所在语句执行完后再+1的,
即使是printf("%d",x+y,++x,++y);结果也为3,因为执行顺序是从左至右,运算x+y时,xy还没自加
不知道你用的什么编译器,是哪种C本回答被提问者采纳
第2个回答  2017-12-26

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

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

参考资料:http://zhidao.baidu.com/question/353406950.html?oldq=1

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

x,y都是整型变量,x=1,y=2,printf("%d",x+y,x++,y++)的值为什么是5
结果是3

x=1,y=2;printf("%d",x+y,x++,y++);怎么计算
第三步:x+y=3+2=5 第四步:输出,因为 printf("%d",x+y,x++,y++); 只输出 x+y的值,所以最后的输出是5 验证代码如下:include <stdio.h>int main(){int x=1,y=2;printf("%d",x+y,x++,y++);}验证结果如下:

...int X=1,y=2,z=3; x+=y+=z; printf("%d",(x<y?X++;y++)) } 输出...
x=1,y=2,z=3 x+=y+=z 是自右运算的,y=y+z=5 此时y=5 x+=y x=x+y=1+5=6 然后判断x<y 很明显x>y 所以条件是假值,取y++ 这里注意一下,要求输出的是y 不是y的值 所以最后结果是5 但如果要求输出y y的值就是6 ...

int x =1, y = 2,z= 2; ++x && y-- || ++z; printf("%d, %d, %d...
上面的也是同理,++x = 2,逻辑与表达式不能确定是否为真,所以在计算右边的y-- = 1,此时即++x && y-- = 2 && 1 = 1,也就是 ++x && y-- || ++z = 1 || ++z,表达式右边就不用计算了,所以z = 2 结果输出2,1,2 ...

为什么(x=1,y=2,y++,x++,x+y)与(x=1,y=2,++y,++x,x+y)结果一样?
第三,x的值开始是1,自加了一次,变成2,y同理,所以两个结果一样 第四,如果你存在异议,问题也只可能出在++在前还是在后的问题 ++在前还是在后,只影响表达式的值,但对于变量来说,没有区别 例如x++,++x,对x来说,都是自动加1,但对于表达式来说,前者是取x的值作为表达式的值,然后x...

main() {int x=1 ,y =2; z=x+++y; printf(“%d %d %d \\n”,x,y,z...
z=x+++y;表示z=(x++)+y;所以输出:2 2 3

Java中为什么for(int x =1,y=2;x<3,y<3;x++,y++)中间不能用逗号隔开...
中间的判断条件不能用‘,’, 可以用‘||’表示‘或’,用‘&&’表示‘与’

...x=1; int y=0; x++; y+=2; printf("%d, %dn",x,y); } int main...
x为static存储类型,只初始化一次,且生存期是整个和程序相同的,即函数推出后x的值也不改变,下次调用时继续保持的 而y是普通的auto存储类型的变量,每次调用函数时,都会被重新初始化 所以第一次调用fun()时,输出2,2,x值为2,第二次调用fun(),x自增1,输出3,2 ...

已知:int x=1,y=2,z;,则执行语句z=x>y?x++:y--后,变量z的值_百度知 ...
include<stdio.h> main(){int x=1,y=2,z;z=x>y?x++:y--;printf("%d %d",z,y);} x>y,则z=x++否则z=y--表达式y--的值先取y值作为表达式的值,即z=2.再y值减1

为什么运行结果是5呢?
执行printf("%d\\n",x--)这条语句。此时x的值是5,先把5输出,然后i的值才变为4.所以没有任何问题。x++,x--是先使用x当前值,再使它自加或自减。而++x,--x,是先使x自加或自减,再使用x,此时的x已经变化了。所以,你要弄清楚++x,--x,x++,x--的含义才会解决实际问题。

相似回答