c語言中i++與++i的使用技巧
首先我們要先知道++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 <stdio.h>
int main()
{
int i = 2;
i = (i++) + (++i) + (++i) + (i++);
printf("i = %d", i);
return 0;
}
輸出結果為: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 <stdio.h>
Int main()
{
Int i = 2;
Printf(“%d %d %d %d %d”, ++i, ++i, i++, ++i,i++):
}
輸出結果為 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++和++iC++
- C++中的i++和++i你真的理解嗎?C++
- c# for(int i;i<3;i++)迴圈的執行次序C#
- C語言中malloc與freeC語言
- C++程式語言中的四個除錯技巧C++除錯
- 每天學點C++知識:用 ++i 替代 i++C++
- Go語言中JSON標籤的用法與技巧GoJSON
- java中i=i++的問題Java
- 圖解i++和++i圖解
- C語言中的strlen與sizeof的區別C語言
- 淺談C語言中函式的使用C語言函式
- C語言中的#和##C語言
- C#自增運算子詳解:++i與i++的區別及應用場景C#
- 關於java中的i++和++iJava
- synchronized下的 i+=2 和 i++ i++執行結果居然不一樣synchronized
- c語言中的&的用法C語言
- C語言中關鍵字typedef、enum的使用C語言
- C語言中sync()C語言
- C語言中有C語言
- 解析C語言中的sizeofC語言
- C語言中extern的用法C語言
- C語言中&&,||,&,| 的區別C語言
- c語言中的作用域C語言
- C語言中水平製表符 與退格鍵 的使用方法探索C語言
- 淺析C語言中的setjmp與longjmp函式C語言函式
- c語言中陣列的宣告與初始化C語言陣列
- 【C】 30_C語言中的字串C語言字串
- C 語言中 define 的全部使用方法總結
- Go語言中切片slice的宣告與使用Go
- jvm是如何執行i = i++ + ++i的,你知道嗎?JVM
- 位元組碼指令分析 ++i 和 i++
- C 語言中的 time 函式函式
- c語言中的關鍵字C語言
- C語言中的檔案流C語言
- C語言中的*和&符號C語言符號
- C語言中的abort函式C語言函式
- 解析C語言中的sizeof (轉)C語言
- C 語言中的 sscanf 詳解