c/c++中的i++和++i的区别

本文总字数:713,阅读预计需要:2分钟

使用 i++ vs. ++i

i++是先赋值再加1

++i是先加1再赋值

到目前为止,你已经学习了如何编写下面这样的 C++ for 循环:

for (int i = 0; i < 10; i++) {}

这条语法同 Python 的 for 循环语法十分相似;然而,你也可以这样编写 for 循环:

for (int i = 0; i < 10; ++i) {}

这两者之间有什么区别?为什么它们都可以运行?

事实上,i++ 和 ++i 都会带来同样的结果;这些都是 i=i+1 的缩写形式,它们之间的区别也十分微妙。

int i = 5;
int x = i++; // x = 5, i = 6 (called postfix)
int x = ++i; // x = 6, i = 6 (called prefix)

在两种情况中,i 变量都增加了 1。在后缀式 i++ 的情况中,先计算了int x = i,再出现了 i=i+1。

而在前缀式 ++i 的情况中,i = i + 1 先出现,再执行了 int x = i。

相比 i++,许多代码指南更推荐使用 ++i。在实际操作中,当使用整数变量时,两者的效率相同。

然而,当你编写一个重载 ++ 运算符的 C++ 类时,这两者之间又有一些差别。在 Python 矩阵项目中你见过了操作重载,其中代码重载了数学符号来进行矩阵加法、减法、乘法,等等。

重载后缀式运算符时,C++ 需要记录两个值。在例子中,记录的值是 5 和 6。而对于前缀式运算符而言,C++ 只需要记录一个值:6。因此,当重载 ++ 运算符时,使用前缀式运算符比后缀式更加高效。

 
posted @   北极星!  阅读(990)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示