int x=5; 求 y = (++x) + (++x) + (++x) 的值

请高手指点

楼主你这个问题问得很刁钻。。。
正确的答案是24。我也是在查阅资料之后才得出来的。
这个过程是
A 首先x自加3次,x为8;
B 然后把8作为表达式中所有的x的值,因此三个8相加为24。
如果你改成y=(x++)+(x++)+(x++)
那么上面A B的顺序交换,为y=15 x最后也为8
当然这是在Turbo C或者MS C中才这样,另外的编译系统,可能不是这样。

参考资料:《C程序设计第三版》谭浩强著 58页
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-11
我个人也不是很清楚,有下面2个理解:
1、++x表示表达式在运算前就已经做自增运算
所以是 y = 6 + 7 + 8=21

2、
++x自加完后x=8,所以y=8+8+8=24
不知道是不是我的编译器出了问题,运行结果是22!!!!
所以现在我也分辨不清了,抱歉。。。
第2个回答  2010-06-11
这是个好问题,我手头的环境有linux和aix,在这两个环境中都测试过了。运行结果如下:

在aix下运行的结果是21。
红帽linux下运行的结果是22,实在难以理解。

但我个人认为应该是,6+7+8=21。这是按照运算优先级得出的结果。但linux的运算结果,实在让人费解。
第3个回答  2010-06-11
++x表示表达式在运算前就已经做自增运算

所以是

y = 6 + 7 + 8

y == 21
第4个回答  2010-06-11
24
++x与x++的区别是一个是先自加在进行别的运算,后面的是先进行运算在自加

int x=5; 求 y = (++x) + (++x) + (++x) 的值
正确的答案是24。我也是在查阅资料之后才得出来的。这个过程是 A 首先x自加3次,x为8;B 然后把8作为表达式中所有的x的值,因此三个8相加为24。如果你改成y=(x++)+(x++)+(x++)那么上面A B的顺序交换,为y=15 x最后也为8 当然这是在Turbo C或者MS C中才这样,另外的编译系统,可能不...

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

C语言int x=5; y=++x;(1) y=x++;(2) 请分别计算出序号(1)和(2)处...
(1)的答案是6 (2)的答案是6 ++x 是前缀表达式 ,分为两部 例如y=++x 先 x=x+1 再把 y=x;x++ 是后缀表达式 ,分为两部 例如y=x++ 先 y=x 再把 x=x+1;记忆方法是 前缀先加再用,后缀先用再加,减法类似 ...

设x的值为5,则表示式(++x)+(++x)+(++x)的值是 24 为什么?
若x的值为5,则表示式x+=x%(-3)-4 y>x++? x- - : y++ 如果用printf输出上式的结果printf("result = %d", y>x++? x- - : y++) 相当于 if (y>x) { x++; printf("result = %d", x); x--; } else { printf("result = %d", y); y++; }...

int y; int x=5; y=(x++)+(++x)+(x*10); 求y的值?
答案是72 在这次运算中,x++和++x只有++1起到了作用,因为x++是先操作后运算,++x则是先运算后操作 因此式子实际上是y=6+6+6×10=72 望采纳,感谢

int x=5;y=x++*x++;y=--y*--y;运行后y是多少
解析:++或--后置运算符优先级小于*,而前置运算符优先级却大于*,所以,运行y=x++*x++;时,首先计算y=x×x=5×5=25,再计算x=x+1=6;x=x+1=7;运行y=--y*--y;时,先y=y-1=25-1=24,;再计算y=24-1=23;最后计算y=23×23=529.即等效代码为:int x=5;y=x*x;x=x+...

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

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

int x=5; int m=0; x+=x+++(x+++m);最后X的值是多少?
解析:++或--后置运算符优先级小于*,而前置运算符优先级却大于*,所以,运行y=x++*x++;时,首先计算y=x×x=5×5=25,再计算x=x+1=6;x=x+1=7;运行y=--y*--y;时,先y=y-1=25-1=24,;再计算y=24-1=23;最后计算y=23×23=529.即等效代码为:int x=5;y=x*x;x=x+...

y=++x*++x
详情请查看视频回答

相似回答