为什么“C”中没有短的int字面量?
发布于 2009-12-15 19:59:51
在C中使用短整型文字是没有意义的,因为所有整型表达式都是当子表达式的大小至少是整型的。
发布于 2009-12-15 20:04:59
或者:因为它们不是必需的!
需要各种大小的数据类型来很好地适应底层硬件和/或节省存储空间,但文字是一种编译时构造,无论如何都会存储到适当的数据结构中。
这与float和double不同,因为相同的数字在这些数字中实际上具有不同的内部表示-无论如何,比几个前导零更不同。
类似地,char和short之间也有区别,尽管它们可能存储在相同的位中:如果程序员谈论的是字符数据,那么指定'A'通常比指定65更方便。
但是对于程序员来说,短99和整型99看起来是一样的,在程序中也是一样的。范围更广的类型将很容易完成这两种类型的工作。
发布于 2009-12-15 20:36:16
如果我们在讨论原始的语言设计,请记住,C语言在16位的PDP-11CPU上获得了它现在的大部分形状。所以他们有整数用于算术,字符用于字符串存储。指针基本上与整数相同。
这门语言非常实用,只是后来才有了更正式和复杂的语法。所以答案就是,事情就是这样的。很久以后,我们得到了32位和64位CPU,并且需要区分不同长度的整数。
直到今天,我几乎编写了所有的C程序,就好像除了char和integer之外没有其他类型一样。哦,顺便说一下,根据标准,C中的"char“可以是有符号的,也可以是无符号的。这反映了字符用于字符存储(字符串),而整数用于算术存储。
为了说明,(谢谢semaj)编译器可以选择将声明为"char“的变量视为"unsigned char”。对于"int“,这不会发生。"int“总是有符号的,但是有了字符就不能确定了。你必须假设一个字符既可以是无符号的也可以是有符号的。这是一种速度优化,以适应在任一实现中工作速度更快的CPU。即,将重点放在作为存储容器的字符上,而不是作为算术类型。(它的名字也是一个赠品。它可以被称为“短”或“小”,但被称为"char“是有原因的。)
https://stackoverflow.com/questions/1906917
复制相似问题