5

私の質問はsizeof、C の演算子についてです。

sizeof('a');整数 97 として受け取るため、4に等しくなります。'a'

sizeof("a");2に等しい: なぜ? また(int)("a")、ガベージ値も与えます。なんで?

4

2 に答える 2

22

'a'文字定数(int標準 Cの型) で、1 つの文字を表します。"a"は別の種類のものです。これは文字列リテラルであり、実際には2 つの文字で構成されています:aと終端の null 文字です。

文字列リテラルは の配列でありchar、文字列内の各文字と終端の null 文字を保持するのに十分なスペースがあります。sizeof(char)is1であり、文字列リテラルは配列であるため、 は文字列sizeof("stringliteral")リテラル内の文字要素の数を返します。これには、終端の null 文字が含まれます。

これ'a'は、inta の代わりにchar標準 C の癖であり、その理由を説明してsizeof('a') == 4sizeof('a') == sizeof(int)ます。これは、C++ では当てはまりませんsizeof('a') == sizeof(char)

于 2012-09-10T18:12:21.503 に答える
4

「a」は文字ですが、「a」は「a」文字の後にヌルが続く文字列であるためです。

于 2012-09-10T18:12:48.460 に答える