转自:race604
http://blog.csdn.net/race604/article/details/6807992
1 功能区别
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;先执行增1操作,再做表达式运算;
而 a = i++,相当于 a = i; i=i+1;先执行表达式操作,再做增1操作;
例如:
- int i = 7;
- printf( "%d ", --i * ++i); // 结果为49
int i = 7; printf( "%d ", --i * ++i); // 结果为49相当于:
- --i;
- ++i;
- i*i;
--i; ++i; i*i;
结果自然为49;
2 效率差别
i++的工作过程是这样的:用一个临时变量temp存放i的值,然后i增一,返回temp
++i的工作过程是这样的:i增一,返回i的引用
因此++i没有创建其他对象,从理论上讲,++i的速度要比i++要快
--也是一样的.
++i的工作过程是这样的:i增一,返回i的引用
因此++i没有创建其他对象,从理论上讲,++i的速度要比i++要快
--也是一样的.