問題

這是在dev c windows中編譯的程式碼:

 #include <stdio.h>

int main() {
    int x = 5;
    printf("%d and ", sizeof(x++)); // note 1
    printf("%d
", x); // note 2
    return 0;
}
 

我希望x在執行註釋1後為6.但是,輸出是:

 4 and 5
 

任何人都可以解釋為什麼x在注1之後不會增加?

  最佳答案

C99 Standard (重點是我的)

6.5.3.4/2

sizeof運算子產生其運算元的大小(位元組),可能是表示式或型別的括號名稱.大小是從運算元的型別確定的.結果是一個整數.如果運算元的型別是一個可變長度陣列型別,則評估運算元;否則,運算元沒有被評估,結果是一個整數常數.

  相同標籤的其他問題

csizeof