遞增運算符(++)和遞減運算符(--):前綴版本位于操作數前面,如++x;后綴版本位于操作數后面,如x++。兩個版本對操作數的影響是一樣的,但是影響的時間不同。這就像吃飯前買單和吃飯后買單的最終結果是一樣的,但是買單的時間不同。
程序清單5.7演示遞增運算符(++)的這種差別。
//5.7
#if 1
#include<iostream>
using namespace std;int main()
{int a = 20, b = 20;cout << "a = " << a << ": b = " << b << endl;cout << "a++ = " << a++ << ": ++b = " << ++b << endl;cout << "a = " << a << ": b = " << b << endl;system("pause");return 0;
}
#endif
a++意味著使用a的當前值計算表達式,然后將a的值加1;而++b的意思是先將b的值加1,然后使用新的值來計算表達式。
雖然選擇使用前綴格式還是后綴格式對程序的行為沒有影響,但執行速度可能有細微的差別。對于內置類型和當代的編譯器而言,這看似不是什么問題。然而,C++允許您針對類定義這些運算符,在這種情況下,用戶這樣定義前綴函數:將值加1,然后返回結果;但后綴版本首先復制一個副本,將其加1,然后將復制的副本返回。因此,對于類而言,前綴版本的效率比后綴版本高。
總之,對于內置類型,采用哪種格式不會有差別;但對于用戶定義的類型,如果有用戶定義的遞增和遞減運算符,則前綴格式的效率更高。