i++和++i 的学习
在<<C++ Primer>> 第四版 5.5中讲解到:
++i:返回操作之后的结果,且是个左值。
i++:返回操作之前的结果,且是有右值。
1 // 2_3.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <iostream> 6 7 8 using namespace std; 9 10 int main() 11 { 12 int i(0), j(0); 13 cout << ++i << endl; 14 cout << j++ << endl; 15 return 0; 16 }
执行结果如下:
i++:先保存这个值本身,以便于返回未加1时的值。对于int型对象或者指针,编译器可以优化,但是对于复杂类型,这样的额外工作会损耗性能。
++i:将这个值加1,然后返回加1后的结果。