int n=1;printf( "%d %d %d\\n ",n,n++,n--);输出为什么是1 1 1?
1.printf函数编译的时候,表达式是从右向左计算的。输出的时候是从左向右输出的。所以表达式的计算顺序为:n--,n++,n 输出的时候,从左向右输出"%d %d %d\\n "的结果 2.这个是比较容易忽视的:变量是栈式存储的,所以不论n--,n++,n中的那个运算,都是对同一个栈地址中的数据进行处理,所以任...
main() { int n=1; printf("%d %d %d\\n",n,++n,n--); } 为什么运行结果...
然后是++n,由于++是前置,所以先计算自增,0自增一个就是1, 然后输出1.最后输出n,n也就是1。所以是1 1 1
...main() { int n=1; printf("%d,%d,%d",n,++n,n--); }
因为在一些编译环境中,printf的执行执行顺序是颠倒的,即从右向左执行。printf("%d,%d,%d",n,++n,n--);所以n--先执行,此时n的值为0。因为后缀的自减操作是有“延迟的”,所以输出为1 ++n第二个执行,自增操作立即生效,输出为1 n第三个执行,输出为1 所以输出为1,1,1 你可以在自己的...
n=1; printf("%d%d%d\\n",n++,++n,n--);
当放在前面时(第二个++n),便是先将n加1然后输出;当放在后面时(第一、三的n++和n--),便是先输出n,然后将n加1(减1)
main() { int n=1; printf(“%d %d %
关键点:printf函数对参数的计算顺序,是从右往左的 所以,这个程序中printf执行的顺序是n--、 ++n、 n,执行逻辑如下:n=1,n--;此时printf输出1,n=0 n=0,++n;此时printf输出1,n=1 n=1;此时printf输出1 所以,这个程序结果是是1 1 1 ...
c语言若n=1,为什么n,++n,n--等于2,2,1
你这个问题没说清楚,估计是printf("%d %d %d",n,++n,n--);的输出结果吧。因为printf的参数是从右到左传递的,所以先看n--,这表示先取n的值1,在所有的值传递完了之后,进行自减1,所以在处理++n时,n=1。再看++n,这个好解释,就先增加1,再传递,所以n=2,最后处理n,所以传递的值...
执行int a=1; printf("% d,% d,% d\\ n"
执行int a=1; printf("%d, %d, %d\\n", a, ++a, a++)的结果为3,3,1。这个语句的输出结果不是唯一的,因为对于求值的顺序是不一定的,所以说还有可能输出的结果为1,2,2。当求值的顺序为自右向左是,那么a++先引用1然后再加1,会输出1,然后++a是先加1再引用,会输出3这个结果,...
main() { int i=1; printf("%d,%d\\n",i,i ); }
在printf执行完后i才会自加。printf函数参数入栈时i的值仍然为1。
int i=1,j=1,k=1; printf("%d\\n",++i||++j&&++k); printf("%d %d %d...
对于C++,||运算是,如果左边部分是1,那么右边不需要判断,直接返回1;所以对于++i||++j&&++k,++优先级高于||,首先判断++i,i=2是true,所以直接返回1,后面不需要判断了。所以输出1;而j,k值没有改变,i变成2;所以输出:2,1,1
int n=0; printf("%d %d %d\\n",++n,++n,++n);
这种情况在c语言中称作由实现定义,不必深究。因为我们根本无法知道n究竟是在什么时候自增的,我们唯一清楚的是当这条语句执行完后,n肯定会自增1。 所以你只要知道以后不要这样用就行了。