In ISO / IEC 9899: 2018 (C18), è indicato al punto 7.20.1.3:
7.20.1.3 Tipi di numeri interi di larghezza minima più veloci
1 Ciascuno dei seguenti tipi designa un tipo intero che di solito è il più veloce 268) per operare con tutti i tipi interi che hanno almeno la larghezza specificata.
2 Il nome typedef
int_fastN_t
indica il tipo intero con segno più veloce con una larghezza di almeno N. Il nome typedefuint_fastN_t
segno più veloce indica il tipo intero senza segno più veloce con una larghezza di almeno N.3 Sono richiesti i seguenti tipi:
int_fast8_t
,int_fast16_t
,int_fast32_t
,int_fast64_t
,uint_fast8_t
,uint_fast16_t
,uint_fast32_t
,uint_fast64_t
Tutti gli altri tipi di questo modulo sono facoltativi.
268) Il tipo designato non è garantito per essere il più veloce per tutti gli scopi; se l'implementazione non ha fondati motivi per scegliere un tipo piuttosto che un altro, sceglierà semplicemente un tipo intero che soddisfi i requisiti di firma e larghezza.
Ma non si afferma perché questi tipi di numeri interi "veloci" siano più veloci.
- Perché questi tipi di numeri interi veloci sono più veloci degli altri tipi di numeri interi?
Ho taggato la domanda con C ++, perché i tipi interi veloci sono disponibili anche in C ++ 17 nel file header di cstdint
. Sfortunatamente, in ISO / IEC 14882: 2017 (C ++ 17) non esiste una sezione del genere sulla loro spiegazione; Avevo implementato quella sezione altrimenti nel corpo della domanda.
Informazioni: in C, sono dichiarati nel file di intestazione di stdint.h
.
typedef
affermazioni. In genere , quindi, viene eseguito a livello di libreria standard. Naturalmente, le mette C standard nessuna vera restrizione su quello che typedef
per - così per esempio una tipica implementazione è quello di fare int_fast32_t
un typedef
di int
su un sistema a 32 bit, ma un compilatore ipotetica potrebbe ad esempio attuare un __int_fast
tipo intrinseco e la promessa di fare un po 'di fantasia ottimizzazioni per scegliere il tipo di macchina più veloce, caso per caso, per le variabili di quel tipo, e quindi la libreria potrebbe fare proprio typedef
questo.