答疑帖

晨曦墨凝發表於2024-11-13

辨析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同理

相關文章