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

 我来答
naobing111
2019-08-26 · TA获得超过418个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:180万
展开全部

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

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

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

随长征宛酉
2020-01-28 · TA获得超过3.8万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:1129万
展开全部
在我坚持不懈的探索中,我终于发现了在vc6.0中printf的奥秘。
首先,他是从右向左计算的,其次是类似i++,i--之类的显示原数值,不会改变原数值。例如上面的-i--输出-8,此时的i依旧等于8。但要是遇到类似于--i或++i的,则要进行计算。例如i=8,--i=7此时的i=7。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
才桂兰权卯
2019-10-11 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:1394万
展开全部
9
7
8
8
-8
-8
这是我认为的结果;
跟你说的vc6编译的跟我想的第一个数字不同,我不能理解;
这个题考的就是
++

--
,++
--
出现在数字前面,那就应该先加1或减1再输出数字;
如果++
--
出现在数字出现在后面那是先输出后加1或减1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
家恕幸婵
2019-08-27 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:30%
帮助的人:1073万
展开全部
这里涉及函数参数入栈顺序,vc平台下的参数入栈,即计算实参的顺序是从右到做,具体过程如下:
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
//
先就算i--
8
i++
8
--i
7
++i
8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式