【问题标题】: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 相同。没有错。

标签: c++ c visual-c++


【解决方案1】:

INT_FAST16_MAX 是可以存储在int_fast16_t 变量中的最大值。

int_fast16_t 保证是最快的 int,大小为至少 16 位。

因为 MSVC 的目标机器具有 32 位通用寄存器,其访问速度比 16 位快,所以int_fast16_t 实际上是一个 32 位整数。因此,INT_FAST16_MAXINT32_MAX

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-21
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2013-12-28
    • 2021-06-10
    • 2014-02-09
    相关资源
    最近更新 更多