c語言中i 與 i的使用技巧

2021-07-15 04:31:53 字數 1364 閱讀 6269

首先我們要先知道++i與i++的基本用法及其基本區別

++i  先自加,在使用

i++  先使用,再自加

粗略地看,++i和i++的作用都相當於i = i+ 1,但++i和i++的區別在於++i是先執行i = i + 1後,再使用i的值,

而i++是先使用i的值後,再執行i = i+ 1.

假如i的原值是3,則下面兩個例子

j = ++i(i的值先變成4,再賦給j,j的值為4)

j = i++(先將i的值賦值給j,即j為3,再執行i的自加,i為4)

清楚這些基本功能之後,我開始說一些複雜的運算,如下:

型別一:

#include

int main()

輸出結果為:16

首先要知道運算方向是從左往右,因為要先運算(i++) + (++i),所以這是乙個整體,所以i的值為++i中自增過後的值,

即為3,然後與++i相加,又因此時i也要自加,所以此時i為4,然後與i++相加,此時i不自加,i為4,即此時運算結果為

3 + 3 + 4 + 4 = 14,又因為式子為   i = (i++) + (++i) + (++i) +(i++);要輸出i的值,所以要將式子中兩個i++中後自加的1

加上,即i = 3 + 3 +4 +4 +2=16

若在程式中加乙個int m;令m= (i++) + (++i) + (++i) + (i++);

則輸出結果m為14,因為題中是求m的值,所以不用考慮最後i++中的自加。 再如

i=(++i)+(i++)+(++i)+(i++)+(i++)

此時i=3+3+4+4+4+3=21

再如另一些情況,++i與i++與函式一起使用,如

型別二在函式中,運算方向為自右往左,在運算過程中要將++i替換成變數名,i++替換成數值。

#include

int main()

輸出結果為 7 7 4 7 2

首先運算方向自右往左

1.     最右面i++替換成數值,即為2,此時i自加1為3

2.     將++i替換成變數i,此時i繼續自加1為4

3.     將i++替換為數值,即為4,此時i繼續自加1為5

4.     將++i替換成變數i,此時i繼續自加1為6

5.     將++i替換成變數i,此時i繼續自加1變為7

此時結果為(i,i,4,i,2)

又因為最後運算結果i為7,即結果為7 7 4 7 2

同樣若printf(「%d %d %d %d %d」, i++, ++i, i, i++,++i):

其結果為(5,i,i,3,i)

因為其中有個i,所以這一步i沒有自加,所以最後i的值為6

即5,6,  6,3, 6

c語言中 i 和 i 問題!

關於 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 為什麼?在內建...

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 先增加,後引...