-1
printf("%d %d",sizeof('a'),sizeof("a"))

これにより、出力が 4 と 2 になります。なぜ出力がそうなのか?

4

2 に答える 2

5

C では、文字定数の type は typeintであるため、この場合は 4 バイトです。文字列リテラル ( など"a") に適用するとsizeof、バイト数が得られます。したがって 2 ( 'a'、および'\0')。

また、%dprint の正しい指定子ではありませんsize_t。おそらく%zuまたはを使用する必要があり%zdます。

于 2012-08-11T14:23:10.993 に答える
2

最初のもの'a'は文字 (一重引用符に注意) でありint、C では型と見なされます。

2 つ目"a"は、2 バイトで構成される文字列 (二重引用符) であり'a''\0'.

于 2012-08-11T14:23:39.950 に答える