c++ - 在 int 上使用 __int16(或 int16_t)的优点/缺点
问题描述
据我了解,用于的字节数int
取决于系统。通常,2 或 4 个字节用于int
.
根据Microsoft的文档,、、和__int8
是Microsoft 特定的关键字。此外,使用 16 位(即 2 个字节)。__int16
__int32
__int64
__int16
问题:__int16
使用(或)的优点/缺点是int16_t
什么?例如,如果我确定我的整数变量的值永远不需要超过 16 位,那么将变量声明为__int16 var
(或int16_t var
)是否有益?
更新:我看到一些评论/答案建议使用int16_t
而不是__int16
,这是一个很好的建议,但并不是使用的真正优势/劣势__int16
。基本上,我的问题是,使用 16 位版本的整数而不是节省 2 个字节的优点/缺点是什么 int
?
解决方案
节省 2 个字节几乎是不值得的。但是,节省数千字节是。如果你有一个包含整数的大数组,使用小整数类型可以节省相当多的内存。这会导致代码更快,因为使用的内存越少,接收到的缓存未命中就越少(缓存未命中是性能的主要损失)。
TL;DR:这在大型数组中是有益的,但对于 1-off 变量毫无意义。
这些的第二个用途是用于处理二进制文件和消息。如果您正在读取使用 16 位整数的二进制文件,那么如果您可以在代码中准确地表示该类型,那将非常方便。
顺便说一句,不要使用微软的版本。使用标准版本 ( std::int16_t
)
推荐阅读
- python - 根据同一数据框的另一列更新分数列
- oracle - ADFDI 电子表格表格渲染出现异常
- python - 使用 dict 键在文件中查找匹配的行,一旦找到,在文件中附加相应的值
- c# - 使用 ocr 在图像中查找签名的位置
- javascript - messages.setBackgroundMessageHandler 未在网络中接收消息
- oracle - SQL Developer 日期显示格式
- c++ - 与 map 一起使用时复制构造函数 const 错误
- sql - 如何使用 group by 函数只取最后两行 postgres
- r - 这段代码中的 bins 函数是什么,我该如何使用它?
- javascript - 如何设置 X 轴和 Y 轴上的衬线?