ホームページ >バックエンド開発 >C++ >C と C で `sizeof('a')` が異なるのはなぜですか?

C と C で `sizeof('a')` が異なるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-21 14:28:10324ブラウズ

Why Does `sizeof('a')` Differ in C and C  ?

なぜ 'a' は C よりも C で多くのバイトを必要とするのか

コード スニペットの出力を調べると、次のことに気づくでしょう。

#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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。