打印 sizeof(char) 和 sizeof("a") 有什么问题?

What is wrong with printing sizeof(char) and sizeof("a")?

C中的sizeof(char)给出1,sizeof("a")给出2,求助

A char 即字符的大小为 1。

字符串文字"a"不是一个字符。它是一个 "string"(我所说的字符串是指 char[])。 C中的所有"strings"都是null-terminated,所以你的"string"实际上是:

{'a','[=10=]'}

这是两个字符。所以大小是 2.

sizeof("a")

"a" 是一个字符串,读作 {'a','[=13=]'},即 2 个字符或 2 个字节。这是因为在 C 中,双引号表示一个字符串。 C中的字符串必须是null-terminated.

sizeof(char)

保证单个字符的大小为 1 个字节。

A sizeof(char)1 字节 大小 ,其中 "a" 是一个 string ,它有 1 个字节的字符,它将以 null '\0' 结尾,所以 sizeof("a")2 字节

'a' 与 "a"

不同

至少对于像 AVR 这样的 8 位 CPU:

'a' 是单个字符并且

sizeof('a') == 1,

你期望的答案。

"a" 是其他答案中提到的字符串。