当前位置: 首页 > news >正文

i++与++i的区别

在C++中, i++ (后自增)和 ++i (前自增)都用于将变量值加1,但核心区别在于操作顺序和返回值,具体如下:

 

1. 操作顺序不同

 

-  ++i (前自增):先将变量值加1,再使用新值。

cpp

int i = 5;

int j = ++i; // i先变为6,再将6赋给j → i=6,j=6

 

 

-  i++ (后自增):先使用变量的原始值,再将值加1。

cpp

int i = 5;

int j = i++; // 先将5赋给j,i再变为6 → i=6,j=5

 

 

2. 返回值类型

 

-  ++i :返回变量本身的引用(左值),可继续赋值。

cpp

int i = 5;

(++i) = 10; // 合法,i先加1变为6,再被赋值为10 → i=10

 

 

-  i++ :返回临时值(右值),不能继续赋值。

cpp

int i = 5;

(i++) = 10; // 编译错误,i++返回的是临时值(5),无法赋值

 

 

3. 效率差异(针对自定义类型)

 

- 对基本类型(int、float等),两者效率几乎无差别(编译器会优化)。

 

- 对自定义类对象, ++i 更高效:

 

-  ++i 直接修改对象并返回引用,无临时对象生成。

 

-  i++ 需创建临时对象保存原始值,再修改对象,开销更大。

 

4. 常见使用场景

 

-  ++i :常用于需要立即使用新值的场景(如循环计数器)。

cpp

for (int i = 0; i < 10; ++i) { // 推荐用前自增,效率略高

    cout << i << endl;

}

 

 

-  i++ :当需要先使用原始值,再自增时(如表达式中间步骤)。

cpp

int a = 3, b;

b = a++ + 5; // b = 3+5=8,a变为4

 

 

总结

 

- 前自增 ++i :先自增,再取值 → 返回引用 → 效率更高(类对象场景)。

 

- 后自增 i++ :先取值,再自增 → 返回临时值 → 适用于需要原始值的场景。

使用时需注意顺序对逻辑的影响,避免因混淆导致bug。

http://www.xdnf.cn/news/963613.html

相关文章:

  • 光影魔术手 4.7.1 | 经典照片美化软件
  • Java八股文——JVM「类加载篇」
  • 论文分类打榜赛Baseline(2):InternLM昇腾硬件微调实践
  • React---day12
  • 【QT】自动更新库QSimpleUpdater使用实例封装
  • golang学习随便记x[2,3]-字符串处理与正则表达式
  • 基于Java项目的Karate UI测试
  • Uniapp如何适配HarmonyOS5?条件编译指南以及常见的错误有哪些?
  • Spring @Autowired解析
  • NoSQL数据库技术详解:Redis与MongoDB的应用与实践
  • MODERNTCN:一种面向通用时间序列分析的现代纯卷积结构
  • 如何保障服务器的安全
  • 高防服务器中高防和硬防之间的区别
  • ASP4644电源芯片FB引脚:从原理到实战
  • 【FFmpeg学习(1)】图像表示
  • php利用createSheet生成excel表格(控制行高列宽、文本自动换行及表头字体样式)
  • Windows 命令行大全
  • JetBrains IntelliJ IDEA插件推荐
  • [创业之路-415]:经济学 - 价值、使用价值、交换价值的全面解析
  • CentOS7下的大数据NoSQL数据库HBase集群部署
  • 「多模态融合(ECG+PPG联合变异性分析)——ECG信号处理-第十六课」2025年6月10日
  • 屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
  • 校园二手交易平台(微信小程序版)
  • AtCoder 第409​场初级竞赛 A~E题解
  • pycharm最近遇到的一些问题
  • Linux 阻塞非阻塞
  • Ubuntu24.04常见问题
  • AbMole推荐:Cisplatin,从机制到应用的全面了解
  • Hive实现值列表横向展示(非列转行)
  • 汽车扭杆综合试验机