#include <stdio.h>
void main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}
为什么是 8788 而不是9788
计算:从右往左,并输出到“缓冲区”。
2.缓冲区是一堆栈
3.
第一步:处理后面的“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.输出缓冲区数据(栈规则):8 8 7 8
另外自增 自减 还可能和编译器有关系
淡定 语法问题 不要太纠结
温馨提示:答案为网友推荐,仅供参考
第1个回答 2016-07-23
不是 8778 嘛
第2个回答 2019-05-10
有一个简单的记忆方法,++在前,就是先自增,i在后,就是自增以后再给值;相反,i在前,就是先给出i的值,++在后,就是把值给出来以后再自增。
m=++i;
i先自增,自增以后为9,然后把9给m
n=j++;
先把j的值10给n,然后再自增,j变成了11
所以得结果。
如果满意请采纳
m=++i;
i先自增,自增以后为9,然后把9给m
n=j++;
先把j的值10给n,然后再自增,j变成了11
所以得结果。
如果满意请采纳
第3个回答 2020-01-31
先跟你解释一下不一样,下面的题就清晰了~
i++先计算在自加1
++i先自加1再计算
i--先计算在自加1
--i先自减1再计算
所以
printf("%d\n",++i);
//这里i先自加1,i=8+1=9,再打印出i,即打印出9
printf("%d\n",--i);
//这里i先自减1,i=9-1=9,在打印出i,即打印出8
printf("%d\n",i++);
//这里先打印i,即打印出8,再自加1,i=8+1=9
printf("%d\n",i--);
//这里先打印i,即打印出9,再自减1,i=9-1=8
i++先计算在自加1
++i先自加1再计算
i--先计算在自加1
--i先自减1再计算
所以
printf("%d\n",++i);
//这里i先自加1,i=8+1=9,再打印出i,即打印出9
printf("%d\n",--i);
//这里i先自减1,i=9-1=9,在打印出i,即打印出8
printf("%d\n",i++);
//这里先打印i,即打印出8,再自加1,i=8+1=9
printf("%d\n",i--);
//这里先打印i,即打印出9,再自减1,i=9-1=8
第4个回答 2020-03-25
++在前面表示先进行变量自增,再运行算式,所以m=++i,先执行++i,i变为9,再赋值给m;
++在后面表示先进行算式,再运行变量自增,所以n=j++,先执行n=j,n被赋值为10,再j自增为11
++在后面表示先进行算式,再运行变量自增,所以n=j++,先执行n=j,n被赋值为10,再j自增为11