还有main(){int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}
结果为9,8,8,9,-8,-9
这到底是为什么,第一题说是自右向左,但我算的就是和结果不一样,能详细说下吗?
main(){ int i=8; printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);}的结果为8 7 7 8
答案:2 悬赏:20 手机版
解决时间 2021-02-15 00:07
- 提问者网友:几叶到寒
- 2021-02-14 04:34
最佳答案
- 五星知识达人网友:摆渡翁
- 2021-02-14 05:21
在printf里的运算顺序是从右向左。然后等运算完了再从左向右输出
如这题先从右向左运算-i--=-8.
然后 i=7
-i++=-7
然后i=8
i--=8
然后i=7
i++=7
然后i=8
--i=7
此时i=7
最后是++i=8
然后从左向右输出
所以结果是8,7,7,8,-7,-8.
至于你分开输出的时候
++i=9
然后i=9
--i=8
然后i=8
....下面自己算
总结
i++是取i当前值。等表达式结束后对i加1
++i是取i加1后的值。
减的同理。不清楚可以再hi我
如这题先从右向左运算-i--=-8.
然后 i=7
-i++=-7
然后i=8
i--=8
然后i=7
i++=7
然后i=8
--i=7
此时i=7
最后是++i=8
然后从左向右输出
所以结果是8,7,7,8,-7,-8.
至于你分开输出的时候
++i=9
然后i=9
--i=8
然后i=8
....下面自己算
总结
i++是取i当前值。等表达式结束后对i加1
++i是取i加1后的值。
减的同理。不清楚可以再hi我
全部回答
- 1楼网友:野味小生
- 2021-02-14 06:59
1、不同的编译器对于printf()函数的解释不同,有的编译器解释为从左到右执行,而有的则解释为从右到左执行。想vc6.0就是解释成从右到左执行的。
2、但是这并不意味着在vc6.0下执行结果就是8778,以为出于某方面的考虑vc6.0要执行多余两个++或--后才会改变变量的值。
3、请看下图我对lz程序的小的改动及其执行结果,相信看后会有所启发。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯