printf("%d %d",sizeof('a'),sizeof("a"))
これにより、出力が 4 と 2 になります。なぜ出力がそうなのか?
C では、文字定数の type は typeint
であるため、この場合は 4 バイトです。文字列リテラル ( など"a"
) に適用するとsizeof
、バイト数が得られます。したがって 2 ( 'a'
、および'\0'
)。
また、%d
print の正しい指定子ではありませんsize_t
。おそらく%zu
またはを使用する必要があり%zd
ます。
最初のもの'a'
は文字 (一重引用符に注意) でありint
、C では型と見なされます。
2 つ目"a"
は、2 バイトで構成される文字列 (二重引用符) であり'a'
、'\0'
.