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

如题所述

第1个回答  推荐于2018-05-26
程序一共输出3行,第一行输出9,第二行输出8,第三行输出还是8。
第三行i++是先取值输出,再自增1,先取出i变量中的8输出到屏幕上,然后再把i变量加1,i变量最后的值是9,但是第三行屏幕上只输出8。追问

printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
getch();
}

追答

printf("%d\n",i--); //先取值输出,再减1,所以输出8,最终i变成7
printf("%d\n",-i++); //先取值输出,再加1,输出-7,最终i变成8
printf("%d\n",-i--); //先取值输出,再减1,输出-8,最终i变成7
getch();
}

追问

谢谢,从第三行开始能说再详细点吗,(第三行i++是先取值输出,再自增1,先取出i变量中的8输出到屏幕上,然后再把i变量加1,i变量最后的值是9,但是第三行屏幕上只输出8。)
再把i变量加1,i变量最后的值是9,但是第三行屏幕上只输出8???为什么??请指教~~

追答

i=8;
printf("%d\n",++i); //先加1,再输出结果,所以输出9,最终i变成9
printf("%d\n",--i); //先减1,再输出结果,输出8,最终i变成8
printf("%d\n",i++); //先取值输出,再加1,输出8,最终i变成9
getch();
}

追问

printf("%d\n",--i); //先减1,再输出结果,输出8,最终i变成8
printf("%d\n",i++); //先取值输出,再加1,输出8,最终i变成9
第一个 输出8,最终i变成8
第二个 输出8,最终i变成9
为什么???

本回答被网友采纳
第2个回答  推荐于2017-12-10
运行程序后,输出为:
9 //i的原值为8,取用i时,i先自增为9,再输出9
8 //i先自减为8,再取用i,输出8
8 //取用i时,先输出8,再i自增为9本回答被网友采纳
第3个回答  2012-07-17

 

第4个回答  2012-07-17
运行一下塞
第5个回答  2018-05-25
main()
{
printf( "%d\n", fac(5) );
}
fac(int n)
{
int s;
if(n==1) return 1;
else return n*fac(n-1);
}

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

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

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都是赋值语句,需要自右边向左运算。其实,主要是函数参数入栈的方式造成有,入栈从右向左,运算也就从右向左。

...viod main() { int i=8; printf(“%d”,++i); printf(“%d...
所以第四个输出的是8)另外,可以看一下这个代码。int main(int argc, char* argv[]){ int b=1;printf("\\n%4d%4d%4d%4d\\n",b,b++,++b,b);printf("\\n%4d\\n",b);b=1;printf("\\n%4d%4d%4d%4d\\n",b++,b++,b++,b++);printf("\\n%4d\\n",b);b=1;printf("\\n%4d%4d%4d%4d...

#include <stdio.h> main() { int i=8; printf("%d,%d,%d,%d,%d\\n...
结果是 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” 先...

curl digest 认证参数怎么设置
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--);} i的初值为8,第2行i加1后输出故为9;第3行减1后输出故为8;第4行输出i为8之后再加1(为9);第5行输出i为9之后...

编写一个C语言程序,i=8输出下列各表达式:i,i++,++i,--i,i--,-i++...
include<stdio.h> main(){ int i=8;printf("%d%d%d",i,i++,++i,--i,i--,-i++,-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\\n%d\\n%d\\n",--i,i--,++i); 7、9、9 第二个9怎么...
因为该编译程序对于函数调用中的参数中的表达式的计算次序是从右向左 首先是++i,自然是9,然后后缀i--,先输出9,再减1变成8,最后--i,先减1变成7再输出 应当是用的VC吧

相似回答