为啥 INT_FAST16_MAX 被定义为 INT32_MAX (VS 2015)?
Posted
技术标签:
【中文标题】为啥 INT_FAST16_MAX 被定义为 INT32_MAX (VS 2015)?【英文标题】:Why INT_FAST16_MAX is defined as INT32_MAX (VS 2015)?为什么 INT_FAST16_MAX 被定义为 INT32_MAX (VS 2015)? 【发布时间】:2017-10-26 22:04:45 【问题描述】:我从 visual studio 2015 打开 "stdint.h" 文件,如下图所示,我注意到 INT_FAST16_MAX
定义为 INT32_MAX
。和未签名的一样。为什么会这样?
但最少的定义如预期。 (下)
#define INT_LEAST16_MAX INT16_MAX
#define UINT_LEAST16_MAX UINT16_MAX
【问题讨论】:
因为 int_fast16_t 和 int32_t 一样? 因为尺寸是实施-#define'd。 为什么不呢?在这个平台上int32_fast_t
恰好与int32_t
相同。没有错。
【参考方案1】:
INT_FAST16_MAX
是可以存储在int_fast16_t
变量中的最大值。
int_fast16_t
保证是最快的 int,大小为至少 16 位。
因为 MSVC 的目标机器具有 32 位通用寄存器,其访问速度比 16 位快,所以int_fast16_t
实际上是一个 32 位整数。因此,INT_FAST16_MAX
是 INT32_MAX
。
另见:
What's the difference between "int" and "int_fast16_t"?【讨论】:
以上是关于为啥 INT_FAST16_MAX 被定义为 INT32_MAX (VS 2015)?的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 16.04下使用gcc输出汇编的.0文件为可执行文件时出现:`_start'被多次定义