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