首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C语言中的短整型文字

问C语言中的短整型文字
EN

Stack Overflow用户
提问于 2009-12-15 19:49:48
回答 3查看 1.2K关注 0票数 2

为什么“C”中没有短的int字面量?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-15 19:59:51

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

票数 6
EN

Stack Overflow用户

发布于 2009-12-15 20:04:59

或者:因为它们不是必需的!

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

这与float和double不同,因为相同的数字在这些数字中实际上具有不同的内部表示-无论如何,比几个前导零更不同。

类似地,char和short之间也有区别,尽管它们可能存储在相同的位中:如果程序员谈论的是字符数据,那么指定'A'通常比指定65更方便。

但是对于程序员来说,短99和整型99看起来是一样的,在程序中也是一样的。范围更广的类型将很容易完成这两种类型的工作。

票数 5
EN

Stack Overflow用户

发布于 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“是有原因的。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1906917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档