有迹象表明询问的区别许多问题short
,并int
在C++整数类型,但实际上,当你选择short
了int
?
day*_*oli 36
(有关更详细的解释,请参阅Eric的答案)
笔记:
int
设置为"自然大小" - 硬件最有效处理的整数形式short
在数组或算术运算中使用时,short
整数被转换为int
,因此这可以引入处理short
整数的速度命中short
可以节省内存,如果它比较窄int
,这在使用大型数组时很重要int
系统相比,16位int
系统结论:
int
除非您保留内存是至关重要的,否则您的程序会占用大量内存(例如,许多阵列).在那种情况下,使用short
.Eri*_*inn 17
你short
在以下int
时间选择:
或
int
或者指定大小的类型short
,这可以根据平台而变化(因为您希望具有32位的平台short
能够读取在平台上写入的文件16位short
).好的候选者是stdint.h中定义的类型.和:
short
在目标平台上存储任何无法存储的值(对于16位short
,这是-32768
- 32767
或0
- 65535
对于16位unsigned short
).short
比的int
.的标准只保证short
是不大于比int
,因此允许实现具有相同的尺寸要short
和用于int
.注意:
char
s也可以用作算术类型.回答"什么时候应该使用char
,而不是short
或int
?" 会读得非常类似于这个,但是数字不同(-128
- 127
对于8位char
,0
- 255
对于8位unsigned char
)
实际上,您可能实际上并不想short
特别使用该类型.如果你想要一个特定大小的整数,那么定义<cstdint>
的类型应该是首选的,例如,int16_t
每个系统上的16位将是16位,而你不能保证short
你的代码在所有目标中的大小相同将编译为.
一般情况下,你不喜欢short
了int
.
int类型是处理器的本机字大小
通常,a int
是处理器的字大小.
例如,对于32位字长处理器,a int
将是32位.处理器使用32位最有效.假设short
是16位,处理器仍然从内存中取出32位.所以没有效率; 实际上它更长,因为处理器可能必须将位移位到32位字中的正确位置.
选择较小的数据类型
有长度特定于比特的标准化数据类型,例如uint16_t
.这些比较模糊的类型char, short,
和int
.这些特定于宽度的数据类型通常用于访问硬件或压缩空间(例如消息协议).
选择一个较小的范围内
的short
数据类型是基于范围没有被比特宽度.在32位的系统中,两个short
并int
可以具有相同的32位的长度.
一旦使用的原因short
是因为该值永远不会超过给定范围.这通常是一个谬论,因为程序会改变,数据类型可能会溢出.
总结
目前,我不再使用short
了.我uint16_t
在访问16位硬件设备时使用.我unsigned int
用于数量,包括循环索引.我使用uint8_t
,uint16_t
并且uint32_t
当用于数据存储的大小事宜.的short
数据类型是不明确的用于数据存储,因为它是一个最小值.随着stdint
头文件的出现,不再需要short
.