C と C++ では文字 sizeof('a') のサイズが異なるのはなぜですか? [重複] 質問する

C と C++ では文字 sizeof('a') のサイズが異なるのはなぜですか? [重複] 質問する
#include <stdio.h>
int main(void)
{
    printf("sizeof(char) = %zu\n", sizeof(char));
    printf("sizeof('a')  = %zu\n", sizeof('a'));
}

見るhttps://godbolt.org/z/1eThqvMhx

このコードをC言語で実行すると、次のように出力されます。

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

このコードをC++で実行すると、次のように出力されます。

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

言語によって出力が異なるのはなぜですか? C と C++ の文字のサイズはどれくらいですか? 私の知る限り、文字のサイズはcharC と C++ の両方で 1 バイトです。

ベストアンサー1

C では、のような文字定数'a'の型は、実際には でint、サイズは 4 (または実装に依存するその他の値) です。C++ では、 型は でchar、サイズは 1 です。これは、2 つの言語間の多くの小さな違いの 1 つです。

おすすめ記事