打印 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" 是其他答案中提到的字符串。
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" 是其他答案中提到的字符串。