下面程序的输出结果是int x=2;int y=3+(x+=x++,x+4,++x);printf("%d",y);

帮我分析一下具体过程吧..谢谢了- -

y应该是9,括号里是三个表达式,用逗号运算符连接,
所以顺序从左到右,第一个表达式结束后x的值为5,即x+=x++,
由于是后置++,所以先算x=x+x,x=4,再算x++,x=5,
第二个表达式几乎没用,所以直接算第三个,由于是前置++,
所以x的值变为6,最后在加上前边的3就是9了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-11
(x+=x++,x+4,++x);括号里逗号分开是以最后一个++x作为表达式的结果
第一步 x+=x++ x的值为5 然后执行x+4和++x 所以x的值最后为6 y的值为6+3=9
第2个回答  2012-06-11
1.X和X做加法等于4,X再自加1,结果X等于5;
2.X加4等于9,但结果不返回X;
3.X自加1等于6;
4.逗号表达式去最右边的值,所以结果为3+6=9.
第3个回答  2012-06-11
先进行括号里面的逗号运算,x += x++; 即x = x + x++,因为x++是后缀自加,所以先使用,则x = 4,然后x再自加就是5,接着第二个x+4不会影响x的值,最后一个++x则能够对x自加,现在x = 6,括号运算符中是看最后一个取值,所以括号的结果是6,然后和外面相加,结果就是9

...int x=0; if (x=2) printf("%d",x++); else printf("%d",++x...
x=2是赋值语句,成立,执行printf,因为是x++,所以先输出x,x再自加,故答案是C

...{int x=2,y; y=x++; printf("%d",y); } 结果是多少?
{int x=2,y; y=x++; printf("%d",y); } 结果y=2,++在后面的是先赋值然后在自增。++在前面的话就是先自增然后在赋值。

int x = 2; int y = x++ * ++x; printf("x = %d\\n",x); printf("y =...
Win下面结果x=4,y=9

...int x=023,y=5,z=2+(y+=y++,x+8,++x);printf(“%d,%d”,x,z...
20,22

int x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); 求程序的结果并...
++x)然后从左往右来:x+=x++,得x=11。(这个地方可以到C 中试验一下,原式可变为x=x+x++,x=5,x++=6,所以x+=x++最后的值为11)。继而++x 得到12;从而(x+=x++,x+8,++x表)达式的值为12 y=2+(x+=x++,x+8,++x)=14 所以输出结果是14.不知各位是否同意我的说法?

int x=3; int y; y=(++x)+(++x)+(++x); printf("%d",y); 为什么结果会...
这个问题的解跟编译器有关 不同的编译器有不同的答案 vc编译的是两个以内的(++)+(++)形式以后面一个的x值为x的值 也就是y=(++x)+(++x)=5+5=10 y=(++x)+(++x)+(++x)+(++x)=5+5+6+7 2个以上的都是这个规律

...{ int x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); }...
(x+=x++,x+8,++x) 逗号语句,【这里不等价于:x=x+(x++,x+8,++x)】,应该和编译器有关吧!先算的x++,x+8,++x,得x=7,然后x=5+7,x就成了12了。最后y=2+12=14

...x=y=0; while (x<15) y++,x+=++y ; printf(“%d,%d”,y,x);_百 ...
include<stdio.h> void main(){ int x=0,y=0;while (x<15){ y++;x+=++y;} printf("%d,%d ",y,x);} 程序结果为 8,20

以下程序的输出结果是 main( ) { int x=10,y=10,i; for(i=0;x > 8...
\/\/ 先输出后计算,所以输出10,10,之后x执行减一,x=9.第二次执行 for(i=0;x > 8;y=++i) \/\/ 此时x=9,i=1,y=1,printf("%d,%d ",x--,y); \/\/ x=9,y=1输出9,1,结束后x=8.第二次执行 for(i=0;x > 8;y=++i) \/\/由于x=8,不满足条件所以退出循环。

...%d",(x++,y),y++); 则上面程序的输出结果是__
所以y的值是10,此时x值后加变成了11,当执行printf()函数时,因为printf()函数运算是从最后运算的,所以首先运算的是y++,因为y++还是后加加,所以y的值还是10,在运算y,所以第二个输出的结果还是10,因为题中的printf()函数输出的只有两个结果,所以x++是不运算的,ok,完了 ...

相似回答