浅谈C中自增“++”

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

看以下代码

int main()
{
int a=20,b;
b=a++;
printf("\na=%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("\ntemp=%#X",temp);
temp1=temp++;
printf("\n自增之后结果");
printf("\ntemp=%#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再参与运算,有兴趣的同学可以自己试试。

猜你喜欢

转载自www.cnblogs.com/xyzg/p/12452660.html