C语言自增自减问题

[复制链接]
查看11 | 回复3 | 2011-7-29 10:36:04 | 显示全部楼层 |阅读模式
turbo c2.0中
i=5;
x=(++a)+(++a)+(++a);
为什么x的输出值为24啊,不是应该为18才对的吗?
i=5;
x=(++a)+(a++)+(++a);
输出结果18,难道不该是16?
请高手讲解,并把计算中的每个a值写出来,****注意不是计算后的a值,是计算过程中的a值,别搞错了!谢谢!
输错了,是a=5,哎!考试就有这样的题目,看得我吐血了,一会这个,一会儿那个,我都不知道那种答案是对的了

回复

使用道具 举报

千问 | 2011-7-29 10:36:04 | 显示全部楼层
i=5;
//应该是a=5吧?x=(++a)+(++a)+(++a);
//这种问题没有必要分析的。在不同的编译系统下,答案不一样,在VC++下,答案是24。...
回复

使用道具 举报

千问 | 2011-7-29 10:36:04 | 显示全部楼层
这个题目没有太实际的意义因为在不同编译器下面结果不一样的.有的会让++a都是同一个值,有的会在每次调用++a的都是都会自增加一次.而国际上的ansi C也没有给出一个正确的解释.所以正确的写法就是,不要这样写.或者非常熟悉你的编译器的情况下再这样写(至少也要象楼上的sun老师一样吧).否则调试都很难...
回复

使用道具 举报

千问 | 2011-7-29 10:36:04 | 显示全部楼层
你是不是 变量定义时把a写成了i呀仅把个人的意见拿出来说一下第一问中 x = 6+7+8=21第二问中 x = 6+6+8=20...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行