为什么'C'中没有短文字文字?
答案 0 :(得分:6)
在C中使用短的int文字是没有意义的,因为所有整数表达式都被计算为好像子表达式的大小至少为int。
答案 1 :(得分:5)
或者:因为不需要它们!
需要各种大小的数据类型以适应底层硬件和/或节省存储空间,但文字是一种编译时构造,无论如何都会存储到适当的数据结构中。
与float
与double
的不同之处在于,相同的数字实际上在这些数字中具有不同的内部表示 - 无论如何,与仅仅少数前导零相比更为不同。
同样,char
和short
之间存在差异,即使它们可能存储在相同的位中:如果程序员正在讨论字符数据,那么他通常会更方便地指定比方说,'A'
比65
。
但是短99
和int 99
对于程序员来说看起来是一样的,在程序中被视为相同...更广泛的类型将很容易地完成两者的工作。 / p>
答案 2 :(得分:1)
如果我们正在讨论原始语言设计,请记住C在PDP-11 CPU(16位)上获得了大部分现有形状。所以他们有算术的整数和字符串存储的字符。指针与整数基本相同。
这种语言非常实用,后来才有了更正式和复杂的语法。所以答案是,恰好就是这样。很久以后我们得到了32位和64位CPU,需要区分不同长度的整数。
直到今天,我几乎编写了所有的C程序,就好像除了char和integer之外没有其他类型。哦,顺便说一句,C中的“char”可以根据标准签名和签名。这反映出字符用于字符存储(字符串)和算术用的内容。
为了澄清,(谢谢semaj)编译器可以选择将声明为“char”的变量视为“unsigned char”。对于“int”,这不会发生。 “int”始终是签名的,但是使用chars你无法确定。你必须假设一个char可以有未签名或签名的算术。这是一种速度优化,可以适应任何实现速度更快的CPU。即焦点放在字符作为存储容器,而不是算术类型。 (它的名字也是赠品。它可以被称为“短”或“小”,但出于某种原因被称为“char”。)