对x++和++x的理解

来源:互联网 发布:淘宝联盟怎么没有佣金 编辑:程序博客网 时间:2024/05/18 00:40

[笔试面试]对x++和++x的理解

 

首先看一段程序:

int main(void){        int x = 3;        printf("x=%d, x++=%d, x=%d\n",x, x++, x);        printf("x=%d, ++x=%d, x=%d\n",x, ++x, x);        printf("x=%d, x++=%d, x=%d\n",x, x++, x);}

执行结果:
x=4, (x++)=3, x=4
x=5, (++x)=5, x=5

x=6, (x++)=5, x=6


分析:
1、x++是整体先返回x当前的值即(x++)=3,然后再执行++操作,执行完++操作之后x就=x+1了,所以这里x=4了。这里是因为x++的优先级比较高,所以先执行x++之后,再执行打印操作。

2、++x是先对x执行++操作即x=x+1,之后再整体返回执行完++操作之后的值,上步操作x=4,所以这里x=5,然后此时的x也=x+1了。显然这里的++x的优先级也是比一般操作要高的,所以这里仍然是先执行++x,后执行打印操作。


注意,这里可以看到,执行完x++或者++x操作之后打印x的值都+1了,而只是x++和++x整体的值有所变化而已。下面是详细的分解说明:

分解‘i=x++;’语句: 

①i=x; 

②i=i+1; 

此后,x不变而i比x大1。然而当再次使用或者引用到x的值的时候,x的值就已经执行过++操作了,所以x就=x+1了 

分解‘i=++x;’语句: 

①x=x+1; 

②i=x; 

此后x=i=原来的“x”+1。


原创粉丝点击