浅谈C中自增“++”

Posted xyzg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈C中自增“++”相关的知识,希望对你有一定的参考价值。

对于xx++,++xx初学的时候都会觉得很难理解

看以下代码

int main()
{
int a=20,b;
b=a++;
printf(" a=%d,b=%d",a,b);
}

刚开始的不运行代码,按照我的理解最后输出 a=20,b=21,不知道是不是有朋友跟我一样的思路的呢。

代码运行结果

a=21,b=20;

a++中意思为a参与运算后再加1,怎么理解参与运算后再加1呢,b=a++请看下面的分析:

 第一步:a赋值给b,此时a的值还为20,所以b=20而非21;

第二步:a增加参与运算后自己加1,所以此时a=21而非20;

前几天刚看到指针部分,用指针来看一波,指针变量int型加1地址增加4个地址,减也是相应的减4个地址

请看下面的代码

int main()
{
int a=20,*temp=&a,*temp1;
printf("未自增之前结果");
printf(" temp=%#X",temp);
temp1=temp++;
printf(" 自增之后结果");
printf(" temp=%#X,temp1=%#X",temp,temp1);
}

运行后结果为:

未自增之前结果
temp=0X22FE3C
自增之后结果
temp=0X22FE40,temp1=0X22FE3C

看地址没执行temp++之前的地址为0X22FE3C,执行temp++后地址为0X22FE40,因为我们定义为int型,指针型变量加1地址加4,刚好加4个地址(D,E,F,0)在看temp2的地址还是0X22FE3C没变

综上2个例子已经说明xx++是先参与运算后再自加1

至于++xx则是先自增1再参与运算,有兴趣的同学可以自己试试。

以上是关于浅谈C中自增“++”的主要内容,如果未能解决你的问题,请参考以下文章

浅谈数据库的相关知识

在C语言中自增自减运算符有啥作用?

c语言中自增自减运算符的运算次序?

c语言中自增自减运算符的运算次序?

浅谈C语言内存

浅谈MyBatis-Plus学习之Oracle的主键Sequence设置