++i和i++在某些地方的差异,主要在实现的方式导致的
- a = i++; 类似于:
a = i;
i = i + 1;
- a = ++i; 类似于:
i = i + 1;
a = i;
i++和++i的 最重要的区别就是 +1和返回值顺序从效率上来说++i比i++来的更有效率,因为i++多声明了一个过渡的变量。如下所示:
- 对于i++的实现是:
int temp;
temp = i;
i = i+1;
return temp;
- 而++i的实现是:
i = i+1;
return i;
比如printf("%d",i++);是先输出i值随后i自加,而printf("%d",++i);中i先加1再输出,即输出的结果为i大1的数字。
对于for循环:
for(operation1;operation2;operation3)
{undefined
//Do Something
}
循环是按下面的顺序来执行的:
- operation1
- operation2
- //Do Something
- operation3
因此i++与++i在单独的语句中结果是一样的。
简单而言:
++i 在 i 存储的值上增加一并向使用它的表达式 返回新的, 增加后的值; 即先加再返回值。
而 i++ 对 i 增加一, 但返回原来的是未增加的值。即先返回再加。