C语言题目main() { int i=8; printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--); }

书上说实参表按照从左到右的顺序计算结果是9889,从右到左是8778,我自己算出来也是这两个结果,可是在VC6.0运行出来是8788,这是为什么呢?如果在试卷上遇到这类题... 书上说实参表按照从左到右的顺序计算结果是9889,从右到左是8778,我自己算出来也是这两个结果,可是在VC6.0运行出来是8788,这是为什么呢?如果在试卷上遇到这类题目应该写哪种答案呢? 展开
 我来答
naobing111
2010-08-25 · TA获得超过418个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:180万
展开全部

1、不同的编译器对于printf()函数的解释不同,有的编译器解释为从左到右执行,而有的则解释为从右到左执行。想VC6.0就是解释成从右到左执行的。

2、但是这并不意味着在VC6.0下执行结果就是8778,以为出于某方面的考虑VC6.0要执行多余两个++或--后才会改变变量的值。

3、请看下图我对lz程序的小的改动及其执行结果,相信看后会有所启发。

昊天wxt
2010-08-25 · 超过17用户采纳过TA的回答
知道答主
回答量:112
采纳率:0%
帮助的人:49.4万
展开全部
是编译器的不同
如果你细心的话,在c-free的结果是8788
vc 6.0是 8788
myeclipse 9889
这种题目是不可能出现在试卷上的,除非那个老师的脑袋秀逗了,而且作为程序员,是禁止写这种语句。否则,根本不是一个合格的程序员。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
100duman
2010-08-25 · TA获得超过966个赞
知道小有建树答主
回答量:1014
采纳率:100%
帮助的人:260万
展开全部
因为VC是至少要执行两个++,--后才会变换i的值的哈
main() { int i=8; printf("%d\n%d\n%d\n",++i,i++,i--); }
这样的话,输出就是
9
8
8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bngelb
2010-08-25 · TA获得超过599个赞
知道小有建树答主
回答量:891
采纳率:0%
帮助的人:474万
展开全部
表示vc抽了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7f58bdc
2018-11-23
知道答主
回答量:6
采纳率:0%
帮助的人:4752
展开全部
。。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式