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

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

在C+中,sizeof('a') == sizeof(char) == 1..这很直观,因为'a'是一个字符文字,并且sizeof(char) == 1按照标准的定义。

然而,在C语言中,sizeof('a') == sizeof(int)..也就是说,C字符文字实际上是整数。有人知道为什么吗?我可以找到很多提到这个C怪癖,但没有解释为什么它存在。


郎朗坤
浏览 617回答 3
3回答

肥皂起泡泡

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

炎炎设计

我不知道为什么C中的字符文字是int类型的具体原因。但是在C+中,有一个很好的理由不这样做。考虑到这一点:void print(int);void print(char);print('a');您可能期望对print的调用选择第二个版本,取一个char。如果有一个字符是整数,那就不可能了。注意,在C+中,具有多个字符的文本仍然具有int类型,尽管它们的值是实现定义的。所以,'ab'有型int,同时'a'有型char.
打开App,查看更多内容
随时随地看视频慕课网APP