In ISO / IEC 9899: 2018 (C18) ist dies unter 7.20.1.3 angegeben:
7.20.1.3 Schnellste Ganzzahltypen mit minimaler Breite
1 Jeder der folgenden Typen bezeichnet einen Integer-Typ, der normalerweise am schnellsten ist 268), um mit allen Integer-Typen zu arbeiten, die mindestens die angegebene Breite haben.
2 Der typedef-Name
int_fastN_t
bezeichnet den am schnellsten vorzeichenbehafteten Integer-Typ mit einer Breite von mindestens N. Der typedef-Nameuint_fastN_t
bezeichnet den schnellsten vorzeichenlosen Integer-Typ mit einer Breite von mindestens N.3 Folgende Typen sind erforderlich:
int_fast8_t
,int_fast16_t
,int_fast32_t
,int_fast64_t
,uint_fast8_t
,uint_fast16_t
,uint_fast32_t
,uint_fast64_t
Alle anderen Arten dieses Formulars sind optional.
268) Es ist nicht garantiert, dass der angegebene Typ für alle Zwecke am schnellsten ist. Wenn die Implementierung keine eindeutigen Gründe für die Auswahl eines Typs gegenüber einem anderen hat, wählt sie einfach einen ganzzahligen Typ aus, der die Anforderungen an Signatur und Breite erfüllt.
Es wird jedoch nicht angegeben, warum diese "schnellen" Ganzzahltypen schneller sind.
- Warum sind diese schnellen Ganzzahltypen schneller als die anderen Ganzzahltypen?
Ich habe die Frage mit C ++ markiert, da die schnellen Ganzzahltypen auch in C ++ 17 in der Header-Datei von verfügbar sind cstdint
. Leider gibt es in ISO / IEC 14882: 2017 (C ++ 17) keinen solchen Abschnitt über ihre Erklärung; Ich hatte diesen Abschnitt ansonsten im Textkörper der Frage implementiert.
Information: In C werden sie in der Header-Datei von deklariert stdint.h
.
typedef
Aussagen. In der Regel erfolgt dies auf der Ebene der Standardbibliothek. Natürlich sind die C - Standard legt keine wirkliche Beschränkung auf das, was sie typedef
zu - so zum Beispiel eine typische Implementierung ist , um int_fast32_t
eine typedef
von int
auf einem 32-Bit - System, sondern eine hypothetische Compiler könnte zum Beispiel eine Implementierung __int_fast
intrinsischen Typ und versprechen etwas Phantasie zu tun Optimierungen, um von Fall zu Fall den schnellsten Maschinentyp für Variablen dieses Typs auszuwählen, und dann könnte die Bibliothek genau typedef
das tun.