1. 执行效果上的区别
首先二者作为单独的语句是没有什么区别的,比如:
#include <stdio.h>
int main(){
int i = 2;
int j = 2;
++i;
j++;
printf("i= %d, j= %d\n",i, j); //i= 3, j= 3
}
其他情况比如前置++i是先加后赋值,后置i++是先赋值后加就不赘述了。
2. 汇编层面上的区别
这里就是为什么推荐大家在循环的时候使用++i的原因。
C语言是汇编层面的代码,我们通过他们实现的代码分析,后置i++比前置++i的汇编代码多了一行,如下:
//通过操作符重载实现
CTest CTest::operator++(){ //前置++
*this += 1;
return *this;
}
CTest CTest::operator++(int){ //后置++
CTest tmp(*this); //记录修改前的对象
++(*this);
return tmp; //返回修改前的对象
}
不难发现后置i++还需要额外创建一个新的局部变量,这样在多次循环中二者的运行时间就会有明显的差别。
所以建议大家在使用循环控制变量时,多使用前置++i