c語言中 i 和 i 問題!

2021-07-05 09:14:36 字數 703 閱讀 2098

關於 ++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 ...