私はCまたはC++での単一引用符と二重引用符の質問を見ていました。説明が完全に理解できなかったので、プログラムを作成しました。
#include <stdio.h>
int main()
{
char ch = 'a';
printf("sizeof(ch) :%d\n", sizeof(ch));
printf("sizeof(\'a\') :%d\n", sizeof('a'));
printf("sizeof(\"a\") :%d\n", sizeof("a"));
printf("sizeof(char) :%d\n", sizeof(char));
printf("sizeof(int) :%d\n", sizeof(int));
return 0;
}
私はgccとg++の両方を使用してそれらをコンパイルしました、そしてこれらは私の出力です:
gcc:
sizeof(ch) : 1
sizeof('a') : 4
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
g ++:
sizeof(ch) : 1
sizeof('a') : 1
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
g ++の出力は私には理にかなっており、私はそれについて疑いの余地はありません。gccでは、何sizeof('a')
と違う必要がありsizeof(char)
ますか?その背後にある実際の理由がありますか、それとも単に歴史的なものですか?
また、Cでサイズが異なる場合、それは、を書くときに暗黙の型変換を行うことを意味し
char
ますか?'a'
char ch = 'a';