i = i++; ——《编写高质量代码》

本文解析了C/C++中i++与++i运算符的行为差异。通过具体示例阐述了i++先赋值后加1,而++i则是先加1后赋值的过程。深入分析了i=i++为何返回原始值1的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习来自《 编写高质量代码》

int a = 1;
a = ++a;
sout(a);  //2

int i = 1;
i = i++;

sout(i);  //1

++a返回的是2,这是正常的,但是 i = i++, 返回的确实1。很奇怪。

先分清,i++和++i的区别。
++i, 先加1,后赋值。
i++, 先赋值,后加加。

i++原理,其实i++是一个表达式,共有以下三个步骤。
1、 int temp = i; // 把i的值复制在一个临时区域
2、 i = i + 1; // 把i加1,并且赋值回i
3、return temp; // 返回temp赋值。

所以分析当执行 i = i++;,共执行以下三个步骤
1, temp = 1;
2, i = i + 1;
3, i = temp;
返回自然是最初值1了,因为i++先执行,被覆盖了。

总结:i++是一个表达式,可以在大多数的时候理解为,先赋值,后++。但是真正运行的顺序是,先++,返回++之前的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值