c语言关于自增自减的问题

#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
所以得结果。
如果满意请采纳
第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
第4个回答  2020-03-25
++在前面表示先进行变量自增,再运行算式,所以m=++i,先执行++i,i变为9,再赋值给m;
++在后面表示先进行算式,再运行变量自增,所以n=j++,先执行n=j,n被赋值为10,再j自增为11

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网