C中的短int文字

为什么’C’中没有短文字?

在C中使用短的int文字是没有意义的,因为所有整数表达式都被评估为子表达式的大小至少为int。

或者:因为不需要它们!

需要各种大小的数据类型以适应底层硬件和/或节省存储空间,但文字是一种编译时构造,无论如何都会存储到适当的数据结构中。

它与floatdouble不同,因为相同的数字实际上在那些中具有不同的内部表示 – 无论如何,不​​仅仅是几个前导零。

类似地, charshort之间存在差异,即使它们可能存储在相同的位中:如果程序员正在讨论字符数据,则通常更方便的是指定'A'不是65

但是短程99和int 99看起来与程序员相同,在程序中被视为相同……范围更广的类型将很容易完成两者的工作。

如果我们正在谈论原始语言设计,请记住C在PDP-11 CPU(16位)上获得了大部分现有形状。 所以他们有算术的整数和字符串存储的字符。 指针与整数基本相同。

这种语言非常务实,后来才有了更正式和复杂的语法。 所以答案是,恰好就是这样。 很久以后我们得到了32位和64位CPU,需要区分不同长度的整数。

直到今天,我几乎所有的C程序都编码,好像除了char和整数之外没有其他类型。 哦,顺便说一句,C中的“char”可以根据标准签名和签名。 这反映出字符用于字符存储(字符串)和算术的内联。

为了澄清,(谢谢semaj)编译器可以选择将声明为“char”的变量视为“unsigned char”。 对于“int”,这不会发生。 “int”总是签名,但是使用chars你无法确定。 你必须假设一个char可以有未签名或签名的算术。 这是一种速度优化,可以适应任何实现速度更快的CPU。 即焦点是作为存储容器的字符,而不是算术类型。 (它的名字也是赠品。它可以被称为“短”或“小”,但出于某种原因被称为“char”。)