-1

重複の可能性:
C/C++ の文字 ('a') のサイズ

OS: linuxmint 32ビット

コンパイラ: gcc & g++

私はこのコードを試しました:

#include <stdio.h>

int main()
{
    printf("%d\n",sizeof('a'));
    return 0;
}

gcc でコンパイルすると、結果は4になり、g++ に変更すると、1

次に、次を使用します: sizeof(char)、結果は1

私は以下を使用します: char s = 'a'; printf('%d\n', sizeof(s));

結果は1

でもインターネットで検索すると、 や の結果が得られるという人もいまし12

では、なぜこれほど多くの結果が異なるのでしょうか。

4

3 に答える 3

1

文字定数はintCcharのように表現されます。型を指定する場合は 1 バイトのみです。

于 2012-08-25T16:05:33.337 に答える
1

のような文字リテラルは、 で使用されるデフォルトの標準である C89 の'a'型を持ちます。C++ では、文字と文字列がそれぞれ と 型を持つことがオーバーロードにとって重要です( について考えてください)。x86およびx64_86以降、説明した結果が得られます。intgcccharchar*std::cout << 'a'sizeof(int) == 4sizeof(char) == 1

于 2012-08-25T16:14:20.977 に答える
1

sizeof(char)C と C++ の両方で、常に 1 です。C では、 の型'c'intであるためsizeof('c')、 と同じsizeof(int)です。C++ では、 の型'c'charであるため、 、つまり 1sizeof('c')と同じです。sizeof(char)

于 2012-08-25T16:14:50.903 に答える