为啥 int 存在于 C 中,为啥不只是 short 和 long
Posted
技术标签:
【中文标题】为啥 int 存在于 C 中,为啥不只是 short 和 long【英文标题】:Why int exists in C, Why not just short and long为什么 int 存在于 C 中,为什么不只是 short 和 long 【发布时间】:2017-05-27 14:55:42 【问题描述】:short
至少为 16 位,long
至少为 32 位,那么int
可以是 16 位还是 32 位有什么意义?
PS:我在这里说的是 ANSI C。
【问题讨论】:
int
是(在大多数情况下,这对于 8 位架构是不可能的)机器的自然字长,因此通常是最高性能的。在 IA32 上,32 位的整数运算确实比 16 位的性能更好。
视情况而定。也许尺寸是您更关心的问题?但是,根据经验,除了大小受限的系统:只要您需要至少 16 位的整数,请使用 int
,但不要关心实际更大的大小。
请参阅section 6.3 here 和脚注 48。
顺便说一句,标准并没有说int
只能是16位或32位,只是int
至少是16位(并且不能大于long
)跨度>
1. “正常”不代表不允许其他尺寸,只是这两个是最常见的。 2. K&R 不是标准
【参考方案1】:
short
、int
和 long
根据定义是三个不同的类型说明符,其中,short int
的排名低于int
,int
的排名低于long int
。
C 标准仅指定最小(和比较,例如,int
不能宽于long
)要求,实现可以选择提供任何其他更广泛的类型定义,保持约束有效。
【讨论】:
以上是关于为啥 int 存在于 C 中,为啥不只是 short 和 long的主要内容,如果未能解决你的问题,请参考以下文章
java, short s=100; 可以。但是 int i=100; short s=i;就不行为啥?
一次定义2个int类型局部变量,这两个局部变量的地址为啥相差12个字节?