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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 07:22:29231ブラウズ

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

C と C の文字サイズの違い

C と C の両方で、 sizeof 演算子はデータ型のサイズに関する情報を提供します。変数。この演算子を使用してプログラムの出力を調べることにより、プログラマは作業しているデータに関する重要な詳細を知ることができます。ただし、驚くべきことに、 sizeof 演算子を C と C の間の文字値に適用すると、異なる結果が得られます。

次の C プログラムを考えてみましょう:

#include <stdio.h>
int main(void) {
    printf("sizeof(char) = %zu\n", sizeof(char));
    printf("sizeof('a')  = %zu\n", sizeof('a'));
}

実行すると、このプログラムは次のように出力します。

sizeof(char) = 1
sizeof('a')  = 4

次に、C で書かれた同じプログラムを見てみましょう。 :

#include <iostream>
int main() {
    std::cout << "sizeof(char) = " << sizeof(char) << std::endl;
    std::cout << "sizeof('a')  = " << sizeof('a') << std::endl;
}

C で実行すると、次が出力されます:

sizeof(char) = 1
sizeof('a')  = 1

主な違いは、C と C が内部で文字定数を表す方法にあります。 C では、「a」のような文字定数は、対応する ASCII 値を持つ整数として扱われます。整数のサイズは通常 4 バイトであるため、C では sizeof('a') が 4 を返すのはこのためです。一方、C では、文字定数は 1 バイトのサイズの char データ型として扱われます。

以上が`sizeof('a')` が C と C で異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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