设x的值为5,则表达式(++x)+(++x)+(++x)的值是 24 为什么?

如题设x的值为5,则表达式(++x)+(++x)+(++x)的值是24为什么?在c语言中调试,答案的确是24,但是应该是6+7+8=21才对呀?... 如题
设x的值为5,则表达式(++x)+(++x)+(++x)的值是 24 为什么?
在c语言中调试,答案的确是24,但是应该是6+7+8=21才对呀?
展开
 我来答
yisbad
推荐于2018-03-21 · TA获得超过538个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:159万
展开全部
根编译器有关。
VC++6.0的编译器对x=(++x)+(++x)+(++x)的算法如下:
设x=5;
则(++x)+(++x)+(++x)=((++x)+(++x))+(++x)
即先算前两个++再算+,((++x)+(++x))+(++x)就等于(7+7)+8,结果为22。
你用的编译器是先算括号里的++然后再把值加到一起。
即(++x)+(++x)+(++x)结果为8+8+8等于24。
就像pluto729这位朋友说的那样,没有什么意义的东西。倒是可以用来难倒别人。
源南露h1
2007-05-12 · TA获得超过128个赞
知道小有建树答主
回答量:288
采纳率:0%
帮助的人:124万
展开全部
是这样的,首先执行括号里的++x
(++x)+(++x)+(++x)
所以最后x=8(x只是一个存储空间,5被6覆盖,6被7覆盖,7被8覆盖)
然后求和
8+8+8=24
编译器不同可能可能有不同答案
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pluto729
2007-05-11 · TA获得超过876个赞
知道小有建树答主
回答量:908
采纳率:0%
帮助的人:773万
展开全部
这应该和编译有关的,它是先把x的值算好再代进去的.

所以写的时候不要在同一个表达式中出现两次自加..或者自减..没什么意义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Fixend
2007-05-11 · TA获得超过1978个赞
知道小有建树答主
回答量:710
采纳率:0%
帮助的人:1035万
展开全部
一个表达式同时用两个或以上的++, 这是C语言标准中未定义的行为,结果如何,靠编译器自由发挥。

和这个帖子是差不多的。
http://www.linuxsir.org/bbs/showthread.php?t=298814
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
肩膀上的太阳
2007-05-11 · TA获得超过295个赞
知道小有建树答主
回答量:288
采纳率:0%
帮助的人:267万
展开全部
是这样的,首先执行括号里的++x
(++x)+(++x)+(++x)
所以最后x=8(x只是一个存储空间,5被6覆盖,6被7覆盖,7被8覆盖)
然后求和
8+8+8=24
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式