私の質問はsizeof
、C の演算子についてです。
sizeof('a');
整数 97 として受け取るため、4に等しくなります。'a'
sizeof("a");
2に等しい: なぜ? また(int)("a")
、ガベージ値も与えます。なんで?
'a'
文字定数(int
標準 Cの型) で、1 つの文字を表します。"a"
は別の種類のものです。これは文字列リテラルであり、実際には2 つの文字で構成されています:a
と終端の null 文字です。
文字列リテラルは の配列でありchar
、文字列内の各文字と終端の null 文字を保持するのに十分なスペースがあります。sizeof(char)
is1
であり、文字列リテラルは配列であるため、 は文字列sizeof("stringliteral")
リテラル内の文字要素の数を返します。これには、終端の null 文字が含まれます。
これ'a'
は、int
a の代わりにchar
標準 C の癖であり、その理由を説明してsizeof('a') == 4
いsizeof('a') == sizeof(int)
ます。これは、C++ では当てはまりませんsizeof('a') == sizeof(char)
。
「a」は文字ですが、「a」は「a」文字の後にヌルが続く文字列であるためです。