第一 i++与++i的区别
对于变量i来说都会在原来基础上加1的,重点区别于式子本身的值;
i++式子值为i原来的值,就是通俗说的“先赋值再加1”;得到一个i的值
而++i式子值为i变化后的值,也就是“先加1后赋值”;得到i 这个变量
i++和++i相同之处是i都自增一,不同是i++表达式的值就是i,因为i++是先赋值后加值
而++i表达式的值是i+1,因为++i是先加后赋值
如:
int a = 1;
int b = a++; //此时先运算b=a,再a++,故b=1,a=2
int c = --a; //此时先--a,再运算c=a,故c=1,a=1
第二 C语言中的+=
这个是自加运算符,表示左值自增右值那么多 比如,a+=5, 表示a = a+5;例如:int a=3,b=4;
a+=b;相当于a=a+b;
+=的优先级跟=一样,低于运算符
i++与++i的效率
是内建数据类型时,它们的效率差别不大(去除编译器优化的影响)。所以在这种情况下我们大可不必关心。 自定义数据类型(主要是指类)时,此时我们不需要再做很多汇编代码的分析了,因为前缀式(++i)可以返回对象的引用,而后缀式(i++)必须产生一个临时对象保存更改前对象的值并返回(实现过自定义类型++运算符定义的就知道),所以导致在大对象的时候产生了较大的复制开销,引起效率降低,因此处理使用者自定义类型(注意不是指内建类型)的时候,应该尽可能的使用前缀式地增/递减,因为他天生体质较佳。
所以
内建数据类型的情况,效率没有区别。 自定义数据类型的情况,++i效率较高。