You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++循环中i--与--i是否等效?i++与++i情况如何?

C循环中i--/--i、i/++i的区别解析

一、for循环里i--和--i的表现

你测试时输出相同,是因为for循环的执行流程决定的:初始化变量 → 判断循环条件 → 执行循环体 → 执行更新表达式 → 回到条件判断。

在更新表达式的位置,不管用i--还是--i,都是循环体执行完之后才对i做自减操作。而且这个更新表达式的返回值在for循环里并没有被使用,所以两种写法最终都会让i减1,循环的次数和输出结果自然一致。

但两者的本质逻辑完全不同:

  • i--是后置自减:先返回i当前的数值,再把i的值减1;
  • --i是前置自减:先把i的值减1,再返回更新后的数值。

要是把它们的返回值用到其他地方,差异就很明显了:

int a = 5;
int b = a--; // b等于5,a变成4
int c = --a; // c等于3,a变成3

二、i和i的情况

和上面的逻辑一样,在for循环的更新表达式位置,i++和++i的实际运行效果也会一致——只要你不使用它们的返回值,两者都会让i增加1,循环的执行结果没区别。

但本质区别同样存在:

  • i++是后置自增:先返回i原来的数值,再把i加1;
  • ++i是前置自增:先把i加1,再返回更新后的数值。

举个例子:

int x = 5;
int y = x++; // y等于5,x变成6
int z = ++x; // z等于7,x变成7

总结

在for循环的更新表达式位置,i--/--i、i++/++i的实际运行效果一致,但这只是因为循环没有利用它们的返回值。在其他场景(比如赋值操作、作为函数参数传递)中,两者的差异会直接影响代码结果,不能混用。

内容的提问来源于stack exchange,提问作者Purushottam Nawale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:31:20