Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
printf("%d %d",sizeof('a'),sizeof("a"))
这给出了 4 和 2 的输出。为什么输出是这样的?
在 C 中,字符常量具有 type int,因此在您的情况下为 4 个字节。当应用于字符串文字(例如"a")时,sizeof产生字节数。因此 2 ( 'a', 和'\0')。
int
"a"
sizeof
'a'
'\0'
此外,%d不是打印的正确说明符size_t。您可能应该使用%zuor %zd。
%d
size_t
%zu
%zd
第一个因为'a'是一个字符(注意单引号)并被认为是intC 中的一种类型。
第二个因为"a"是一个由两个字节组成的字符串(双引号),'a'并且'\0'.