在C语言中,使用++i和i++之间的区别是什么,在for循环的增量块中应该使用哪个?
当前回答
A =i++表示A包含当前i的值。
A =++i表示A包含i的增量值。
其他回答
请不要担心哪个“效率”(真的是速度)更快。现在我们有编译器来处理这些事情。使用任何一个有意义的,在此基础上更清楚地表明你的意图。
i++:在这种情况下,首先赋值,然后进行递增。
++i:在这个场景中,首先完成增量,然后赋值
下面是图像可视化,这里也有一个很好的实用视频,演示了同样的。
++i可以比i++稍微快一点的原因是,i++可以在i的值被递增之前要求它的本地副本,而++i从不这样做。在某些情况下,一些编译器会尽可能地优化它……但这并不总是可能的,并不是所有编译器都这样做。
我尽量不太依赖编译器优化,所以我会遵循Ryan Fox的建议:当我可以使用两者时,我会使用++ I。
简单地说,两者之间的区别在于步骤,请看下图。
例子:
int i = 1;
int j = i++;
j的结果是1
int i = 1;
int j = ++i;
j的结果是2
注意:在这两种情况下i的值都是2
下面的C代码片段说明了前后递增和递减操作符之间的区别:
int i;
int j;
增量运算符:
i = 1;
j = ++i; // i is now 2, j is also 2
j = i++; // i is now 3, j is 2