【发布时间】:2019-12-23 15:03:07
【问题描述】:
与 C++ 不同,在 C 中,字符文字被实现为始终为 int 类型。
但是为什么我们有 char 的类型来保存一个字符值呢?
在问题Why are C character literals ints instead of chars?,
讨论过,为什么字符文字在 C 中属于 int 类型。但这不是我的问题所在。
在If character constants are of type `int', why are they assigned to variables of type `char`? 的问题中,这个问题更深入一点,为什么我们实际上将字符文字分配给char 类型的变量,如果它们是int 类型的变量,但提供的答案留下了关注点,为什么我们通常需要char 的类型。
我现在的问题是:
- 如果任何字符文字总是
int类型,为什么我们有char类型? - 那么
char的类型不是多余的吗? -
char类型的目的是什么,如果它看起来是多余的?
【问题讨论】:
-
如果char类型不存在,你将如何声明一个字符数组?
-
@VladfromMoscow 整个
char类型的概念现在对我来说似乎不正确。对我来说,需要在这个主题上定义不同的语言,提供修饰符或类似的东西,向编译器标记上下文(如果需要)是关于文字字符而不是通常的整数值, 通过使用int类型。 -
char类型和文字 char 常量是 2 个独立的实体,其尺寸根据标准定义为系统上可用的最小内存单元,第一个,标准 @987654337 @ 输入第二个。任何试图在char类型和 char 文字(即'abc')之间进行等价的尝试在形式上都是不正确的。 -
一个字符在不同的机器上可以有不同的维度,8、16甚至32位,字符文字和
char变量之间的赋值意味着从int到char的类型转换. -
re 在 C 中,literal 存在于某个内存位置,因此它有一个地址。研究字符串文字,复合文字。像
'A'这样的常量不需要存在于地址中 - 例如可以是可执行代码中的一个值。
标签: c types char character language-lawyer