首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么大号(‘a’)在C是4?

为什么大号(‘a’)在C是4?
EN

Stack Overflow用户
提问于 2011-12-28 10:44:31
回答 3查看 2.4K关注 0票数 12

可能重复: 为什么C字符文字是ints而不是字符?

代码语言:javascript
运行
复制
#include<stdio.h>
int main(void)
{
    char b = 'c';
    printf("here size is %zu\n",sizeof('a'));
    printf("here size is %zu",sizeof(b));
}

这里的输出是(参见live 这里)。

代码语言:javascript
运行
复制
here size is 4 
here size is 1

我不明白为什么sizeof('a')是4?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-28 10:45:46

因为在C字符常量中,例如'a‘具有int类型。

关于这个对象有一个C常见问题

也许令人惊讶的是,C中的字符常量是int类型,所以sizeof of (‘a’)是sizeof of(Int)(尽管这是C++不同的另一个方面)。

票数 12
EN

Stack Overflow用户

发布于 2011-12-28 11:08:29

下面是著名的C书“The C programming Language by Kernighan & Ritchie”中关于单引号之间的字符的著名行。

A character written between single quotes represents an integer value equal to the numerical value of the character in the machine's character set.

所以sizeof('a')等同于sizeof(int)

票数 10
EN

Stack Overflow用户

发布于 2011-12-28 10:47:08

在默认情况下,‘’是一个整数,因此在机器中可以得到4个字节的int大小。

char是1字节,正因为如此,你得到了1字节。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8654837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档