浅谈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中自增“++”的主要内容,如果未能解决你的问题,请参考以下文章