コード スニペットの出力を調べると、次のことに気づくでしょう。
#include <stdio.h> int main(void) { printf("sizeof(char) = %zu\n", sizeof(char)); printf("sizeof('a') = %zu\n", sizeof('a')); }
文字定数 'a' のサイズが C と C で異なることがわかります。この相違の背後にある理由を詳しく調べてみましょう。
C では、「a」のような文字定数は、4 バイトのサイズまたは実装固有の値を持つ int として格納されます。ただし、C では、 'a' の型は明示的に char であり、占有するのは 1 バイトのみです。
この違いは、2 つの言語での文字定数の扱いの違いに由来しています。 C は文字定数を整数 (int 型) として扱いますが、C では文字に別の char 型が導入されています。
したがって、C では 'a' は整数として格納され、その 4 バイト サイズが説明されます。対照的に、 C では、 'a' は文字 (char) であり、サイズは 1 バイトになります。この違いは、2 つの言語間の微妙な違いの 1 つを浮き彫りにしています。
以上がC と C で `sizeof('a')` が異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。