在C语言中,使用++i
和i++
有什么区别,在for
循环的增量块中应该使用哪一个?
++i
将增加i
的值,然后返回增加的值。
i = 1;
j = ++i;
(i是2,j是2)
i++
将增加i
的值,但返回i
被增加前的原始值。
i = 1;
j = i++;
(i是2, j是1)
对于一个 "for "循环,两种方法都可以。++i
似乎更常见,也许是因为在K&R中使用的就是这个。
无论如何,遵循 "首选++i
而不是i++
"的准则,你就不会出错。
关于++i
和i++
的效率,有几个评论。在任何非学生项目的编译器中,都不会有性能差异。 你可以通过查看生成的代码来验证这一点,这些代码将是相同的。
效率问题很有趣......这是我尝试的一个答案。 https://stackoverflow.com/questions/24886/is-there-a-performance-difference-between-i-and-i
正如On Freund所指出的,这对C++对象来说是不同的,因为operator++()
是一个函数,编译器不知道要优化掉创建一个临时对象来保存中间值。