Na ISO / IEC 9899: 2018 (C18), é declarado em 7.20.1.3:
7.20.1.3 Tipos inteiros de largura mínima mais rápidos
1 Cada um dos seguintes tipos designa um tipo inteiro que geralmente é o mais rápido 268) para operar com todos os tipos inteiros que tenham pelo menos a largura especificada.
2 O nome typedef
int_fastN_t
designa o tipo inteiro assinado mais rápido com uma largura de pelo menos N. O nome typedefuint_fastN_t
designa o tipo inteiro mais rápido sem sinal com uma largura de pelo menos N.3 Os seguintes tipos são necessários:
int_fast8_t
,int_fast16_t
,int_fast32_t
,int_fast64_t
,uint_fast8_t
,uint_fast16_t
,uint_fast32_t
,uint_fast64_t
Todos os outros tipos deste formulário são opcionais.
268) Não é garantido que o tipo designado seja o mais rápido para todos os fins; se a implementação não tiver motivos claros para escolher um tipo em detrimento de outro, simplesmente escolherá um tipo inteiro que atenda aos requisitos de sinal e largura.
Mas não se afirma por que esses tipos inteiros "rápidos" são mais rápidos.
- Por que esses tipos inteiros rápidos são mais rápidos que os outros tipos inteiros?
Marquei a pergunta com C ++, porque os tipos inteiros rápidos também estão disponíveis no C ++ 17 no arquivo de cabeçalho de cstdint
. Infelizmente, na ISO / IEC 14882: 2017 (C ++ 17), não existe uma seção dessa explicação; Eu havia implementado essa seção de outra maneira no corpo da pergunta.
Informação: em C, eles são declarados no arquivo de cabeçalho de stdint.h
.
typedef
declarações. Então, normalmente , é feito no nível de biblioteca padrão. Obviamente, o padrão C não impõe nenhuma restrição real ao que eles typedef
devem fazer - por exemplo, uma implementação típica é usar int_fast32_t
um sistema typedef
de int
32 bits, mas um compilador hipotético poderia, por exemplo, implementar um __int_fast
tipo intrínseco e prometer fazer algo sofisticado. otimizações para escolher o tipo de máquina mais rápido, caso a caso, para variáveis desse tipo e, em seguida, a biblioteca pode typedef
fazer isso.