为了账号安全,请及时绑定邮箱和手机立即绑定

为什么C字符文字是INT而不是字符?

为什么C字符文字是INT而不是字符?

C++ C
郎朗坤 2019-06-20 10:20:49
为什么C字符文字是INT而不是字符?在C+中,sizeof('a') == sizeof(char) == 1..这很直观,因为'a'是一个字符文字,并且sizeof(char) == 1按照标准的定义。然而,在C语言中,sizeof('a') == sizeof(int)..也就是说,C字符文字实际上是整数。有人知道为什么吗?我可以找到很多提到这个C怪癖,但没有解释为什么它存在。
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

讨论同一主题

在K&R C中,如果不首先将字符值提升为int,几乎(?)是不可能使用字符值的,因此使字符常量int一开始就消除了这一步骤。过去和现在仍然存在‘ABCD’这样的多字符常量,或者无论多少字符都适合于int。”


查看完整回答
反对 回复 2019-06-20
?
炎炎设计

TA贡献1808条经验 获得超4个赞

我不知道为什么C中的字符文字是int类型的具体原因。但是在C+中,有一个很好的理由不这样做。考虑到这一点:

void print(int);void print(char);print('a');

您可能期望对print的调用选择第二个版本,取一个char。如果有一个字符是整数,那就不可能了。注意,在C+中,具有多个字符的文本仍然具有int类型,尽管它们的值是实现定义的。所以,'ab'有型int,同时'a'有型char.


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 616 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信