c++: i++还是++i

刚开始学C语言时,increment的前缀形式++i有时叫做“增加然后取回”,后缀形式i++叫做“取回然后增加”。
但是for循环里我们看到有用i++,也有用++i,执行效率有什么区别吗?
来看下increment的定义

// 前缀形式:增加然后取回值
UPInt& UPInt::operator++()
{
 *this += 1; // 增加
 return *this; // 取回值
}

// postfix form: fetch and increment
const UPInt UPInt::operator++(int)
{
 UPInt oldValue = *this; // 取回值
 ++(*this); // 增加
 return oldValue; // 返回被取回的值
}
  • 后缀操作符函数没有使用它的参数,它的参数只是用来区分前缀与后缀函数调用。
  • 后缀操作要多生成一个局部对象oldValue,然后调用前缀操作,因此执行速度比前缀操作慢,对循环控制变量i,要养成写++i、不写i++的习惯
  • const 关键词修改后缀操作的返回值,是为了保持与int类型一致,避免出现i++++这种操作
    • 首先int不支持i++++;
    • 其次,第二次进行++时已经不是原始对象的值,而是第一次调用的返回值,这样会导致++对原始对象操作一次,对返回值操作一次,不符合我们的直觉。

operator++()和operator++(int)的区别
C++迭代器(STL迭代器)iterator详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值