1. ホーム
  2. c

[解決済み] なぜsizeof(x++)はxをインクリメントしないのですか?

2022-03-18 22:30:39

質問

以下は、dev c++ windowsでコンパイルしたコードです。

#include <stdio.h>

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

期待する x を実行した後、6になります。 注1 . しかし、出力されるのは

4 and 5

なぜ x の後にインクリメントされません。 ノート1 ?

解決方法は?

からの C99規格 (強調は私です)

<ブロッククオート

6.5.3.4/2

sizeof 演算子は、オペランド (式または括弧で囲まれた型名) のサイズ (バイト) を出力します。サイズは、オペランドの型から決定されます。結果は整数になります。オペランドの型が可変長配列の場合は、オペランドが評価され、そうでない場合は、オペランドが評価されます。 オペランドは評価されません。 であり、結果は整数の定数である。