關於 ++i 和 i++
一、簡單地說,單獨使用時,就是
i = i + 1;
二、a=++i,相當於 i=i+1, a=i; (先i=i+1,再使用i的值)
a=i++,相當於 a=i, i=i+1; (先使用i的值,再i=i+1)
前者是先自增,後賦值;後者是先賦值,後自增。
三、單獨使用時,++i 的效率要比 i++ 效率高。
1、為什麼?
在內建資料型別的情況下,效率沒有區別(除去編譯器優化的影響)。
在自定義資料型別的情況下,++i 的效率較高。
2、分析:
1)自定義資料型別的情況下
(1)++i 返回物件的引用;
(2)i++ 總是要建立乙個臨時物件,在退出函式時還要銷毀它,而且返回臨時物件的值時還會呼叫其拷貝建構函式,
導致在大物件的時候產生了較大的複製開銷,引起效率降低。因此使用自定義型別(注意不是指內建型別)的時候,
應該盡可能地使用字首式遞增或遞減。
2)過載這兩個運算子如下
class integer
integer& operator++()
integer operator++(int)
private:
long m_data;
};void main(void)
C語言中i 和 i的區別
1 字首 i 變數型別可以是基本型別也可以是指 指標型別。i使變數i的值增加 1 並以i的新值作為表示式 i 運算的結果,該表示式返回的就是變數i增加1以後的值 i等價於i i 1 2 字尾 i i 的意思是首先求得整個表示式的值,該表示式的值就是變數i原來的值。在確定了表示式的結果以後,i的值再增...
C語言中的 i 和 i 的區別
1 i int i 0 while i 10 2 i inti 0 while i 10 1 與 2 經過運算後,i的值都是10。在while和for迴圈中的 i 和 i 是沒有區別的。現在我們來看一段程式 include int main i 和 i的區別就是 i 先引用,後增加 i 先增加,後引...
C語言中 i 和 i 有什麼區別?
今天有同學問c語言中for迴圈裡那個 i 和 i 是否有區別,我告訴他在for迴圈中是沒有區別的,現在具體說一下 i 和 i 的區別。我們先用while語句寫一下 for i 1 i 10 i int i 0 while i 10 再用while語句寫一下 for i 1 i 10 i int i ...