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_tdesigna o tipo inteiro assinado mais rápido com uma largura de pelo menos N. O nome typedefuint_fastN_tdesigna 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_tTodos 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 typedefdevem fazer - por exemplo, uma implementação típica é usar int_fast32_tum sistema typedefde int32 bits, mas um compilador hipotético poderia, por exemplo, implementar um __int_fasttipo 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 typedeffazer isso.
