有迹象表明询问的区别许多问题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.注意:
chars也可以用作算术类型.回答"什么时候应该使用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.
| 归档时间: |
|
| 查看次数: |
18211 次 |
| 最近记录: |