int i=8; printf("%d%d%d%d",++i,--i,i++,i--); 答案为什么是8788?求解,谢谢

如题所述

2楼的没跟他说清楚……
这里其实有一个逗号运算符的问题。由逗号运算符隔开的几个表达式,其整体表达式的值为最后一个表达式的值。所以运算时编译器直接优先算最后一个表达式的值。
所以printf里面那几个运算顺序你可以看成由右往左运算。首先运算i--,然后运算i++这样
而后置++和--会等到该行表达式运算完毕后,再另行++,--
你这个打印完之后,i值依然为 8
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-13
这同编译器和编译选项有关。
运算次序:
i--, 后缀减减,值不变 i=8
i++后缀++,值不变 i=8
--i 前缀减减,值变 i=7
++i 前缀加加,值变 i=8
打出 8788追问

++i 前缀加加,值变 i=8
为什么?,i,+后不是9吗?

追答

按次序 变化!
--i 前缀减减,值变 i=7
在 i=7 基础上变化
++i 前缀加加,值变 i=8

追问

那后面的i++,i--呢?那后面也不会是88啊?

本回答被网友采纳
第2个回答  2018-11-03
这里是一个逗号运算符的问题。由逗号运算符隔开的几个表达式,其整体表达式的值为最后一个表达式的值。所以运算时编译器直接优先算最后一个表达式的值。所以printf里面那几个运算顺序你可以看成由右往左运算。首先运算i--,然后运算i++这样,而后置++和--会等到该行表达式运算完毕后,再另行++,--,你这个打印完之后,i值依然为 8
第3个回答  2018-11-03

我的怎么不一样呢


第4个回答  2017-10-24
参数表是从右至左计算压栈的,那不一眼看出就8788了吗?

...++i,--i,i++,i--); 答案为什么是8788?求解,谢谢
所以printf里面那几个运算顺序你可以看成由右往左运算。首先运算i--,然后运算i++这样 而后置++和--会等到该行表达式运算完毕后,再另行++,-- 你这个打印完之后,i值依然为 8

...{ int i=8; printf("%d\\n%d\\n%d\\n%d\\n",++i,--i,i++,i--); }...
1、不同的编译器对于printf()函数的解释不同,有的编译器解释为从左到右执行,而有的则解释为从右到左执行。想VC6.0就是解释成从右到左执行的。2、但是这并不意味着在VC6.0下执行结果就是8778,以为出于某方面的考虑VC6.0要执行多余两个++或--后才会改变变量的值。3、请看下图我对lz程序...

...{ int i=8; printf("%d,%d,%d,%d,%d\\n",i,i++,++i,--i,i...
结果是 8,8,9,7,8吧,楼主

{ int i=8; printf("%d\\n%d\\n%d\\n%d\\n",++i,--i,i++,i--); }帮忙分析...
1.计算:从右往左,并输出到“缓冲区”。2.缓冲区是一堆栈 3.第一步:处理后面的“i--”。8进入缓冲区,i=7。缓冲区:8 <-(指针)第二步:处理“i++”。7进入缓冲区,i=8。缓冲区:7 8<- 第三步:处理”--i“。8进入缓冲区,i=7.缓冲区:8 7 8 第四步:处理“++i” 先...

int i=8 printf("%d\\n%d\\n",++i,--i)为何为8,7
printf("%d\\n%d\\n",++i,--i);printf中的运算从最后一个参数开始 如i=8;printf("%d%d%d\\n",++i,++i,++i,++i)结果为12,11,10,9

...int i=8; printf(“%d”,++i); printf(“%d”,--i); printf_百度知 ...
所以i=8,先i--,得到i不变(下一条语句时i才等于7,这也就是为什么第二个输出的是7,第一个输出的是8没有改变),再i++,也得到i不变(下一条语句时i才等于8),执行--i,i立刻减去1,得到i=7(也就是8-1=7,所以第三个输出的是7),再执行++i,i立刻加1,得到i=8(也就是7+1...

void main() { int i=8; printf("%d\\n%d\\n%d\\n%d\\n%d\\n",--i,--i...
如图,正确答案应该是8,9,10,9,8 --i和++i都是赋值语句,需要自右边向左运算。其实,主要是函数参数入栈的方式造成有,入栈从右向左,运算也就从右向左。

...int i=8; printf("%d\\n",++i); printf("%d\\n",--i); printf("%d\\n...
程序一共输出3行,第一行输出9,第二行输出8,第三行输出还是8。第三行i++是先取值输出,再自增1,先取出i变量中的8输出到屏幕上,然后再把i变量加1,i变量最后的值是9,但是第三行屏幕上只输出8。

...程序,i=8输出下列各表达式:i,i++,++i,--i,i--,-i++,-i--的值_百 ...
include<stdio.h> main(){ int i=8;printf("%d%d%d",i,i++,++i,--i,i--,-i++,-i--);}

++i、--i和i++、i--的区别理解
++i、--i和i++、i--的区别:1、执行时间先后顺序不同。++i 先执行i+1后执行程序 i++ 先执行程序后执行i+1 int i=8; printf("%d\\n",++i),先执行加法所以打印出来的是9 printf("%d\\n",--i)。2、执行减法的先后程序不同。先执行减法 打印出来是8 printf("%d\\n",i++)。先执行...

相似回答