辨析i++
與++i
這兩個表示式基本相同,均可對i
進行加一操作,但是當需要訪問表示式的值時,會有略微不同,請看以下程式碼:
#include <stdio.h>
int main()
{
int i = 0;
printf("%d\n", i++);
printf("%d\n", ++i);
return 0;
}
輸出結果如下:
0
2
這是怎麼回事呢?
這兩個表示式均可以分為兩個操作:返回 \(i\) 的值、對 \(i\) 進行加 \(1\) 操作。但是執行操作的順序不同,i++
是先返回 \(i\) 的值,然後再對\(i\) 進行加 \(1\) 操作;而++i
是先對 \(i\) 進行加 \(1\) 操作,然後再返回 \(i\) 的值。下面藉助剛才的程式碼進行詳細解釋:
int i = 0;
printf("%d\n", i++);\\先返回i的值輸出i(輸出0),然後再對i進行+1操作
\\執行完後,i的值為1
printf("%d\n", ++i);\\先對i進行+1操作(輸出1),然後再返回i的值輸出i
\\執行完後,i的值為1
記憶方法:++在 \(i\) 前則先進行 \(+1\) 操作;++在 \(i\) 後則後進行 \(+1\) 操作
i--
與--i
同理