C语言程序问题 printf("%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,-i++,-i--);

以下输出是什么?
我认为应该是:8 7 8 -7 -8
但在VC6.0下运行却是 8 7 8 -8 -8
为什么?请教高手朋友们.谢谢!

#include<stdio.h>
void main(){

int i=8;
printf("%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,-i++,-i--);

}

编译软件不同,实参数的求值顺序也不相同。
在编程时,最好不要写这样类似有歧义的句子。
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言格式输入与输出
1、printf("%d\\n%d\\n%d\\n%d\\n%d\\n%d\\n", ++i, --i, i++, i--, -i++, -i--);我觉的和编译器的风格有关,最好不要这样写,可以定义一些变量,依次获取他们的结果;2、y = (x = a + b),(b + c),对于这个逗号表达号,先左后右,x=a+b,X=6,整个表达式为x值,然后...

c语言递增递减
printf("%d\\n%d\\n",i++,--i);会显示 7 8 因为i=8,线进行--运算,i=7,显示,在进行++运算。i=8。

C语言 关于++ --
printf("%d\\n%d\\n%d\\n%d\\n",++i,--i,i++,i--);你这编译器处理这的时候是按由右向左运算的 先 i-- i 赋值成7 但此处不变 故输出 8 i++ i自加(7+1) 值为8 此处不变 输出7 --i 自减(8-1) 值为7 输出7 ++i 自加(7+1) 值为8 输出8 所以输出:8 7 7 8 ...

...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程序...

...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” 先...

C语言菜鸟问题
printf("%d\\n%d\\n%d\\n%d\\n",++i,--i,i++,i--);其中,++i,--i,i++,i--;这是逗号表达式,执行顺序为从右向左,++i,会先i自增1,然后作为++i这个表达式的返回值;对于i--,在基础的时候就应该知道C程序是用分号“;”分割每条语句的,那么整个的printf()就是一条语句,所以i--...

Int i=8 printf("%d\\n%d\\n%d\\n%d\\n%d\\n%d\\n%d\\n",i,+
首先,c语言函数调用时参数压栈是倒着来的,最先入栈的是最后那个参数-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...

printf()和i++,++i函数问题
像printf("%d\\n%d\\n%d\\n%d\\n",a1,a1++,++a1,a4);和printf("The frist test:\\n%d\\n%d\\n%d\\n%d\\n%d\\n",i,i++,i--,++i,--i);这种语句就属于典型的未定义行为,研究它们的值是多少无意义。实际编程中绝对不要写出这样的代码。printf("%d\\n",i++);printf("%d\\n",i--);print...

怎么让turbo c 从右向左输入字符?
使用Printf函数时还要注意一个问题, 那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右, 也可从右到左。Turbo C是按从右到左进行的。如把例2.13改写如下述形式:Void Main(){ Int I=8;Printf("%D\\N%D\\N%D\\N%D\\N%D\\N%D\\N",++I,--I,I--,I++,-I--);} I<...

...printf("%d\\n", -i--); 结果为:-8 -9 请问 -i++ 和 -i-- 分别等 ...
-i++,-i-- 自增、自减与负号都是右结合运算符,同级(在C语言里没有前置后置之分,C++里有区分)。这里负号右侧有i,因此会输出-8,自增或自减后面没有值,所以不会被输出,但执行后i值会有相应变化,需要注意的是,这里打印-i并不会对i取负值,若执行i=-i则会。printf("%d\\n",-...

相似回答