基本概念
两者的作用都是自增加1。
单独拿出来说的话,++i和i++,效果都是一样的,就是i=i+1。
int main()
{
int i = 0;
i++;
}
int main()
{
int i = 0;
++i;
}
++i和i++的区别
单独使用的时候是没有区别的,但是如果当成运算符,就会有区别了!
我们用a=i++和a=++i举例说明
1.先说a=i++,这个运算的意思是先把i的值赋予a,然后在执行i=i+1;
当i初始等于3时,执行a=i++,最终结果a=3,i=4.
2.而a=++i,这个的意思是先执行i=i+1,然后在把i的值赋予a;
当i初始等于3时,执行a=++i,最终结果a=4,i=4.
所以说两者参与运算时的区别就是:
a=i++ , a 返回原来的值a=i,i=i+1;
a=++i , a 返回加1后的值,a=i+1,i=i+1。
1.也就是i++是先赋值,然后再自增;++i是先自增,后赋值。
2.第二个区别就是: i++ 不能作为左值,而++i可以。
i++和++i那个效率更高?
当我们考虑自定义类的时候,就不一样了。
i++是先用临时对象保存原来的对象,然后对原对象自增,再返回临时对象,不能作为左值;++i是直接对于原对象进行自增,然后返回原对象的引用,可以作为左值。
由于要生成临时对象,i++需要调用两次拷贝构造函数与析构函数(将原对象赋给临时对象一次,临时对象以值传递方式返回一次);
++i由于不用生成临时变量,且以引用方式返回,故没有构造与析构的开销,效率更高。
所以在使用类等自定义类型的时候,应尽量使用++i。