在ISO / IEC 9899:2018(C18)中,在7.20.1.3中进行了规定:
7.20.1.3最快的最小宽度整数类型
1下列每个类型都指定一个整数类型,该类型通常最快(268)以与至少具有指定宽度的所有整数类型一起使用。
2 typedef名称
int_fastN_t
指定宽度至少为Nuint_fastN_t
的最快有符号整数类型。typedef名称指定宽度至少为N 的最快无符号整数类型。3需要以下类型:
int_fast8_t
,int_fast16_t
,int_fast32_t
,int_fast64_t
,uint_fast8_t
,uint_fast16_t
,uint_fast32_t
,uint_fast64_t
此表单的所有其他类型都是可选的。
268)不能保证指定类型在所有目的上都是最快的;如果实现没有明确的理由选择一种类型而不是另一种类型,它将仅选择一些满足符号性和宽度要求的整数类型。
但是没有说明为什么这些“快速”整数类型更快。
- 为什么这些快速整数类型比其他整数类型快?
我用C ++标记了这个问题,因为快速整数类型在C ++ 17的头文件中也可用cstdint
。不幸的是,在ISO / IEC 14882:2017(C ++ 17)中没有关于其解释的章节; 我在问题正文中以其他方式实施了该部分。
信息:在C中,它们在的头文件中声明stdint.h
。
typedef
陈述。因此,通常,它是在标准库级别完成的。当然,他们有什么C标准看跌期权没有真正的限制,typedef
因此,例如,一个典型的实现是让-以int_fast32_t
一个typedef
的int
32位系统,但一个假设编译器能够例如实现一个__int_fast
内在的类型,并承诺做一些花哨进行优化以根据具体情况为该类型的变量选择最快的机器类型,然后库可以typedef
做到这一点。