1

重複の可能性:
sizeof(x++) が x をインクリメントしないのはなぜですか?

#include<stdio.h>
int main(void)
{
  double num=5.2;
  int var=5;
  printf("%d\t",sizeof(!num));
  printf("%d\t",sizeof(var=15/2));
  printf("%d",var);
  return 0;
}

プログラムは出力を与えました4 4 5。なぜこれが起こったのかよくわかりませんでした。

  • 最初の出力が 4 だったのはなぜですか?
  • varget の値が 7 に更新されなかったのはなぜですか?

sizeofオペレーターはどのように働きますか?

4

2 に答える 2

3

!num
var=15/2

どちらも int に評価されます。 sizeof(int)プラットフォームでは常に 4 です。

var が更新されない理由については、次のとおりです。

sizeof はコンパイル時の演算子であるため、コンパイル時に sizeof とそのオペランドは結果の値に置き換えられます。オペランドはまったく評価されません (可変長配列の場合を除く)。結果の型だけが重要です。

https://stackoverflow.com/a/8225813/141172

于 2012-07-24T05:34:15.237 に答える
1

演算子は、引数のダーツタイプのサイズsizeofを示します引数の結果は返しません。プラットフォームでは、整数は4バイトの長さであり、ここで学習します。結果が必要な場合は、を切り取ってsizeofください。

于 2012-07-24T05:39:37.713 に答える