int i=8; printf("%d\n%d\n%d\n",--i,i--,++i); 7、9、9 第二个9怎么来的 ?i=n-1?

如题所述

因为该编译程序对于函数调用中的参数中的表达式的计算次序是从右向左
首先是++i,自然是9,然后后缀i--,先输出9,再减1变成8,最后--i,先减1变成7再输出
应当是用的VC吧
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-02
这个题的正确答案不是8,9,9吗

...i,i--,++i); 7、9、9 第二个9怎么来的 ?i=n-1?
首先是++i,自然是9,然后后缀i--,先输出9,再减1变成8,最后--i,先减1变成7再输出 应当是用的VC吧

{ int i=8; printf("%d\\n%d\\n%d\\n%d\\n",++i,--i,i++,i--); }帮忙分析...
第一步:处理后面的“i--”。8进入缓冲区,i=7。缓冲区:8 <-(指针)第二步:处理“i++”。7进入缓冲区,i=8。缓冲区:7 8<- 第三步:处理”--i“。8进入缓冲区,i=7.缓冲区:8 7 8 第四步:处理“++i” 先自增1,然后8进入缓冲区,i=8 .缓冲区: 8 8 7 8 4.输出缓...

...{ 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\\n%d\\n%d\\n%d\\n%d\\n",--i,--i,++i,++i,i...
如图,正确答案应该是8,9,10,9,8 --i和++i都是赋值语句,需要自右边向左运算。其实,主要是函数参数入栈的方式造成有,入栈从右向左,运算也就从右向左。

Int i=8 printf("%d\\n%d\\n%d\\n%d\\n%d\\n%d\\n%d\\n",i,+
其次,如果遇到复合语句,则根据规则来进行,这条打印语句相当于:printf("%d\\n%d\\n%d\\n%d\\n%d\\n%d\\n%d\\n",i,++i,--i,i,i,-i,-i); i++; i--; i++; i--;参数入栈顺序是:-i=-8,压栈 -i=-8,压栈 i=8,压栈 i=8,压栈 执行--i,i=8-1=7,保存到i i=7,压栈...

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

i = 8;printf("%d\\n", -i++); printf("%d\\n", -i--); 结果为:-8 -9...
自增或自减后面没有值,所以不会被输出,但执行后i值会有相应变化,需要注意的是,这里打印-i并不会对i取负值,若执行i=-i则会。printf("%d\\n",-i++) \/\/此时i为8,输出为-8,此句执行后,i为9 printf("%d\\n",-i--) \/\/此时i为9,输出为-9,此句执行后,i为8 ...

...{ 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%d%d",++i,--i,i++,i--); 答案为什么是8788?求解...
其整体表达式的值为最后一个表达式的值。所以运算时编译器直接优先算最后一个表达式的值。所以printf里面那几个运算顺序你可以看成由右往左运算。首先运算i--,然后运算i++这样 而后置++和--会等到该行表达式运算完毕后,再另行++,-- 你这个打印完之后,i值依然为 8 ...

相似回答