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
相关产品推荐
相关产品推荐

