2015-12-23 21 views
5
char c = 'A'; 
printf("%d\n",sizeof(c));// output = 1 
printf("%d\n",sizeof('A')); // output = 4 

演算子が同じ文字に対して異なる出力を与えるのはなぜですか?助けてくださいCのsizeof演算子の理解

+0

'A'には型がないためです。それは 'int'と解釈されています。 –

+2

@DavidHoelzer型があり、型が 'int'です –

+0

かなり十分です。 'A'はどんな形でもキャストされないので、それは定義上int型です。私は、彼らがどのように定義されたかに違いがあったという事実にもっと焦点を合わせました。ありがとう! –

答えて

6

cはタイプcharの変数です;そのサイズは1バイトです。

'A'intです。なぜ標準がそれを言っているのか私に聞かないでください。そのサイズは、ご使用のプラットフォームでは4バイトです(sizeof(1)と同じ)。

+0

非常に古くから、人々は 'xy'のようなマルチバイト文字を使用していました。 PDP11のUNIXコードにはそれほど多くのものがありました。彼らはCをビエンディアンのマシンに移植したとき、ほとんどが離れました。 C++はこれを修正しました...文字定数は文字です。これは、CがC++の適切なサブセットではないいくつかの方法の1つです。 –