Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么编译器将字符视为整数?

为什么编译器将字符视为整数?
EN

Stack Overflow用户
提问于 2012-07-26 07:21:10
回答 4查看 885关注 0票数 4

我有一小段代码。当我在我的DevC++ gnu编译器上运行它时,它显示了以下输出:

代码语言:javascript
运行
AI代码解释
复制
 main ()
 {      char b = 'a';
        printf ("%d,", sizeof ('a'));
        printf ("%d", sizeof (b));
        getch ();
 }

产出:4 1

为什么'a'被视为整数,而b则仅被视为字符常量?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-26 07:21:58

因为字符文本在C中是int类型的,而不是char类型的。

所以sizeof 'a' == sizeof (int)

注意,在C++中,字符文字的类型是char,所以是sizeof 'a' == sizeof (char)

票数 9
EN

Stack Overflow用户

发布于 2012-07-26 07:27:04

这正是C语言最初定义的方式。为什么..。那时,C中的几乎所有东西都是int,除非有一个非常好的理由让它成为其他的东西。因此,历史上C中的字符常量具有int类型。

注BTW,在C术语中,'a'被称为常量,而不是文字。C有字符串文本,而没有其他文本。

票数 0
EN

Stack Overflow用户

发布于 2012-07-26 07:29:17

在C中,字符文字有int类型。

在C++中,只包含一个字符的字符字符具有char类型,它是一个整体类型。

在C和C++中,宽字符文字有wchar_t类型,多字符文字有int类型。

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

https://stackoverflow.com/questions/11672582

复制
相关文章

相似问题

为什么不将字符视为整数?

10

将字符串视为整数

37

为什么Matlab阶乘函数将整数视为非整数?

11

Rails/Postgres将字符串列视为整数

11

将字符串视为整数进行排序

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档