对x++和++x的理解

4 篇文章 0 订阅

[笔试面试]对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。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值