int n=1;printf( "%d %d %d\n ",n,n++,n--);输出为什么是1 1 1?
来源:百度知道 编辑:UC知道 时间:2024/05/23 13:15:02
我是vc6.0运行结果是1,1,1 可我觉得无法理解
++,--作为后缀时,是先取变量值参与到表达式运算中,等当前表达式结束后再++,--的
另外,有专家忠告,不要把带++,--的句子写在别的句子中,因为不同的编译器对这样句子会产生不同的编译结果,比如楼下这位的编译器,输出就是1 1 2.
首先需要明白3个概念:
1.
printf函数编译的时候,表达式是从右向左计算的。输出的时候是从左向右输出的。
所以表达式的计算顺序为:n--,n++,n
输出的时候,从左向右输出"%d %d %d\n "的结果
2.
这个是比较容易忽视的:
变量是栈式存储的,所以不论n--,n++,n中的那个运算,都是对同一个栈地址中的数据进行处理,
所以任何一个处理都会影响"%d %d %d\n "的3个输出结果,
因为他们都是输出的同一个栈空间内的数据
所以:
n--:表达式结果为1,运算后n为0
n++:表达式结果为0,运算后n为1
所以最后存放n值的栈空间内的数据为1
输出结果为:1 1 1
这不需要理解,这和编译器有关,不同编译器的编译顺序不同,n,n++,n--。有些编译器是从左向右编译的,有些事从右向左编译的,建议写成不容易出错的形式。
这个的输出应该是1 1 2。
main() {int i,int sum=0; {for(i=1;i<=100;i++) sum=sum+i; printf("\n%d",sum);
int y=10; do{y--;} while(--y); printf("%d\n",y--);
main () {int x=2;while(x--); printf("%d\n",x)}
c语言中printf 函数? int x=10; printf("%d %d\n",++x,--x);运行结果为什么是 10 9?为什么不是11 10?
main() {int num=0; while (num<=2) {num++; printf("%d\n",num);}}
int n=2;printf("%d,%d,%d,%d,%d\n",++n,n++,n+=2,--n,n--);输出的值为什么是4,2,2,0,2
int a=-1;a=a|0377,printf("%d,%o",a,a):
C语言中为什么int a=-1 printf("%o",a)等于177777
int i=1;printf("%d",(i++)+(++i)+(i++));的结果为什么是6?
main(){int a,b;a=32767;b=a+1;printf("a=%d,b=%d\n",a,b); } 这个程序为什么会没有运行结果