sizeof(x++) が x を増分しないのはなぜですか? 質問する

sizeof(x++) が x を増分しないのはなぜですか? 質問する

コンパイルされたコードは次のとおりです。開発-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;
}

注 1 をx実行した後は 6 になるはずです。ただし、出力は次のようになります。

4 and 5

ノート 1以降はなぜx増加しないのですか?

ベストアンサー1

からC99 標準(強調は私によるものです)

6.5.3.4/2

sizeof 演算子は、式または括弧で囲まれた型の名前であるオペランドのサイズ (バイト単位) を返します。サイズはオペランドの型によって決まります。結果は整数です。オペランドの型が可変長配列型の場合、オペランドは評価されます。それ以外の場合、オペランドは評価されず、結果は整数定数になります。

おすすめ記事