文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。
今天有同学问C语言中for循环里那个 i++ 和 ++i 是否有区别,我告诉他在for循环中是没有区别的,现在具体说一下 i++ 和 ++i 的区别。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> using namespace std; int main() { for(int i = 0; i < 10; i++) { cout << i << endl; } cout << endl; for(int i = 0; i < 10; ++i) { cout << i << endl; } } |
不管是前置自增还是后置自增,结果都是0-9,没有任何区别
但是,++i更快,因为编译器不需要保存一个临时变量保存i,当你做一个非常非常非常大的循环的时候,可能会体会到这一点速度差异
下面再看2段代码
前置自增:
1 2 3 |
int a = 0; int b = ++a; // 结果是 b=1, a=1 |
后置自增:
1 2 3 |
int a = 0; int b = a++; // 结果是 a=1, b=0 |
结果很明显
i++ :先引用后增加,先在i所在的表达式中使用i的当前值,后让i加1
++i :先增加后引用,让i先加1,然后在i所在的表达式中使用i的新值
转载请注明:Slyar Home » C/C++语言中 i++ 和 ++i 有什么区别?