在C语言中,使用++i
和i++
有什么区别,在for
的递增 block 中应该使用哪个> 循环?
最佳答案
++i
将增加i
的值,然后返回增加后的值。i = 1; j = ++i; (i is 2, j is 2)
i++
将增加i
的值,但返回i
在增加之前保持的原始值。i = 1; j = i++; (i is 2, j is 1)
对于 for
循环,两者都可以。 ++i
似乎更常见,可能是因为 K&R 中使用了它.
在任何情况下,遵循“更喜欢 ++i
而不是 i++
”的指导方针,你就不会出错。
关于 ++i
和 i++
的效率有一些评论。在任何非学生项目编译器中,都不会有性能差异。您可以通过查看生成的代码来验证这一点,它们将是相同的。
效率问题很有趣……这是我尝试回答的问题: Is there a performance difference between i++ and ++i in C?
作为@OnFreund请注意,对于 C++ 对象而言,它是不同的,因为 operator++()
是一个函数,编译器不知道要优化临时对象的创建以保存中间值。
关于c -++i 和 i++ 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24853/