int x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); 结果是多少,为什么?请大侠们解释清楚点,谢谢!

如题所述

int x=5;
int y=2+(x+=x++,x+8,++x); //这里括里面要取的值是最后一个逗号后面的值
//前面依次执行 x+=x++,这个是先用了x再x++ x+=x相当于 x=x+x =5+5=10 再x++ x=11,然后是x+8,x不变,最后是++x,x=12,所以y=12+2=14
printf("%d",y); //输出14
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-20
结果为14
y的值为括号内最左边的式子的值加上2; 括号内的计算顺序是从右向左。追问

能详细的说说括号里没一步x的值么?

追答

首先执行++x,执行完后,x=6所以第三个式子结果为6,
再计算第二个式子,x+8=14,第二个式子结果O14
再计算一个式子,分丙步:首先执行x=x+x,再执行X++,第一个式子结果为12。
所以y=12+2=14

本回答被提问者采纳
第2个回答  2012-02-20
14.。。。。跑出来的~

int x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); 结果是多少,为什...
int x=5;int y=2+(x+=x++,x+8,++x); \/\/这里括里面要取的值是最后一个逗号后面的值 \/\/前面依次执行 x+=x++,这个是先用了x再x++ x+=x相当于 x=x+x =5+5=10 再x++ x=11,然后是x+8,x不变,最后是++x,x=12,所以y=12+2=14 printf("%d",y); \/\/输出14 ...

int x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); 求程序的结果并...
首先(x+=x++,x+8,++x)这个表达式可以变成(x+=x++,++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...

...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

C语言知识
int x=6;int y=2+(x+x++,x+8,++x);printf("%d\\n%d\\n",x,y);运行结果是10 第二行括号里的逗号表达式运行过程是从左往右,逗号表达式返回的最终结果是最后面的++x:x+x++:先执行x+x,但是并没有将相加结果赋给x,此时x还是6,然后执行x++,这样x的值变成7;x+8:x+8的结果没有...

C#里面 int x=5 int y=(x++)+(++x)+x为什么y这个表达式中后一个x取...
因为x++ 和++x 都是在x这个内存空间上操作 并没有开辟临时的变量空间 所以前面修改了 x 后面读出来的自然是修改后的值 记得采纳啊

...{ int x =5, y= 10; y++ ; x + = ++y; printf("%
【结果】:x=0,y=12第一次:执行前x=30,y=0,满足循环条件;运算结束x=15,y=2;循环结束x=14,y=3第二次:执行前x=14,y=3,满足循环条件;运算结束x=7,y=5;循环结束x=6,y=6第三次:执行前x=6,y=6,虽然x

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

已知有int x=5,分别执行表达式y=x++和y=++x后,y 的值分别为( )?
y=x++ 出来的应该是5 x++是你这条运行完之后x才变成6, 另外一个出来的是6,++x是先加1在赋值

int x=5 输出x++为什么等于4
++x, ++在前,则先把x加1即x=x+1, 再把x值赋给表达式 x++, x在前,就是先把x值赋给表达式, 再把x加1即x=x+1,记住++x或x++, 是一个表达式,最后要看表达式的值而不是最后x的值 --也类似 if条件为假,执行完后x=4,接着执行else,表达式的值是4,所以输出4 ...

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

相似回答