为什么快速整数类型比其他整数更快?

问题描述 投票:2回答:1

[在ISO / IEC 9899:2018(C18)中在7.20.1.3中声明:

7.20.1.3最快最小宽度整数类型

1下列每个类型都指定一个整数类型,该整数类型通常最快268)可与至少具有指定宽度的所有整数类型一起使用。

2 typedef名称int_fastN_t指定宽度至少为N的最快有符号整数类型。typedef名称uint_fastN_t指定宽度至少为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)不能保证指定的类型在所有情况下都是最快的;如果实现没有明确的理由选择一种类型而不是另一种类型,那么它将仅选择一些满足符号性和宽度要求的整数类型。


但是没有说明为什么这些“快速”整数类型更快。

  • 为什么这些快速整数类型比其他整数类型快?

在7.20.1.3中规定了ISO / IEC 9899:2018(C18):7.20.1.3最快最小宽度整数类型1以下每种类型都指定一个通常最快的整数类型268 ...]]] >

尽管C和C ++是抽象的,但我们通常使用它们对真实的计算机进行编程,真实的计算机表示具有各种属性的多种体系结构。

[在一种体系结构上,32位word可能是最“自然”的数据类型,因此是最快的数据类型(不需要观察或操作它的additional operations),而在另一种体系结构上则可能并非如此。琐碎的工作。

因此,在某些平台上,x位整数可能比另一个整数“更快”。提供这些别名是为了给实施者和程序员提供在其平台上使用“快速”类型的灵活性,唯一的限制是它提供了[[至少

他们所需的数值范围。个人而言,我从来没有发现自己需要使用它们(至少在Coliru上,我观察到sizeof(int_least8_t)==1sizeof(int_least16_t)==2等。),但是您的行驶里程可能会有所不同,尤其是在某些异国情调的系统上。
c++ c performance types int
1个回答
4
投票

尽管C和C ++是抽象的,但我们通常使用它们对真实的计算机进行编程,真实的计算机表示具有各种属性的多种体系结构。

© www.soinside.com 2019 - 2024. All rights reserved.