1. ホーム
  2. c++

[解決済み】C/C++の文字('a')の大きさについて

2022-03-26 03:10:34

質問

CとC++の文字の大きさは?私の知る限り、CとC++の両方で、charのサイズは1バイトです。

C言語では

#include <stdio.h>
int main()
{
    printf("Size of char : %d\n", sizeof(char));
    return 0;
}

C++の場合。

#include <iostream>
int main()
{
    std::cout << "Size of char : " << sizeof(char) << "\n";
    return 0;
}

驚くことではありませんが、どちらも出力は : Size of char : 1

今、私たちは、文字が 'a' , 'b' , 'c' , '|' ,... そこで、上記のコードを以下のように修正しただけです。

C言語では

#include <stdio.h>
int main()
{
    char a = 'a';
    printf("Size of char : %d\n", sizeof(a));
    printf("Size of char : %d\n", sizeof('a'));
    return 0;
}

出力します。

Size of char : 1
Size of char : 4

C++の場合。

#include <iostream>
int main()
{
    char a = 'a';
    std::cout << "Size of char : " << sizeof(a) << "\n";
    std::cout << "Size of char : " << sizeof('a') << "\n";
    return 0;
}

出力します。

Size of char : 1
Size of char : 1

なぜ sizeof('a') は、CとC++で異なる値を返すのですか?

どのように解決するのですか?

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