コンパイルされたコードは次のとおりです。開発-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 演算子は、式または括弧で囲まれた型の名前であるオペランドのサイズ (バイト単位) を返します。サイズはオペランドの型によって決まります。結果は整数です。オペランドの型が可変長配列型の場合、オペランドは評価されます。それ以外の場合、オペランドは評価されず、結果は整数定数になります。