讓我們來看看這最後一行是如何工作的更詳細。首先,編譯器將啟動乙個與x(5)相同的值的x的臨時副本。然後它將原來的x從5增加到6。然後編譯器評估臨時副本,該副本計算為5,並將該值賦給y。然後將臨時副本丟棄。
因此,y結束了5的值,x結束的值為6。
這裡是另乙個例子顯示的差異之間的字首和字尾版本:
int x = 5, y = 5;
cout << x << " " << y << endl;
cout << ++x << " " << --y << endl; // prefix
cout << x << " " << y << endl;
cout << x++ << " " << y-- << endl; // postfix
cout << x << " " << y << endl;
在第三行中,x和y是遞增/遞減之前,他們的評價,所以他們的新值列印由cout。在第五行,乙個原始值的臨時副本(x = 6,y = 4)傳送給cout,然後原來的x和y是遞增的。這就是為什麼從字尾式操作符的結果沒有改變到下一行。
規則:有利於後遞增和後遞減的預增量和預減量。字首版本不僅更加高效,你就不太可能遇到奇怪的問題。
***乙個函式或表示式被稱為有乙個***,如果它修改一些狀態(例如,在記憶體中的任何儲存資訊),輸入或輸出,或呼叫有***的其他功能。
大部分時間,***是有用的:
123
4567
891011
1213
int add(int x, int y)
int main()
return 乙個臨時物件
如果函式返回值是乙個物件,要考慮return 語句的效率。例如 return string s1 s2 這是臨時物件的語法,表示 建立乙個臨時物件並返回它 不要以為它與 先建立 乙個區域性物件temp 並返回它的結果 是等價的,如 string temp s1 s2 return temp 實質不然...
乙個 電腦原始人 的獨白
一 依稀 還記得 那個四點半 凌晨的天空寂寞的樣子 就是在那個時間點 知道了 我的專業是電腦科學與技術 當時的感覺 豈是乙個無言以對 能形容的了的 突然想起高中老師常掛在嘴邊的那句話 既然選擇了遠方 便風雨兼程 而我既然被選擇了這個學校裡掛科率最高 沒有之一的專業 那麼且行且珍惜 其實 對於未知陌生...
臨時表的乙個新用法
工作中遇到乙個問題,有乙個記錄數很多的大表,archive部分資料到另外乙個表。現在user輸入乙個關鍵字 查出來的記錄唯一 我們需要查詢到符合條件的整條記錄所有值。查詢思路很簡單,先在大表裡面找,找到了就返回記錄的值,找不到就到archive裡面去查詢。開始的時候我使用了exists,可是這樣做,...