В ИСО / МЭК 9899: 2018 (С18) указано в 7.20.1.3:
7.20.1.3 Самые быстрые целочисленные типы минимальной ширины
1 Каждый из следующих типов обозначает целочисленный тип, который обычно является самым быстрым ( 268) для работы среди всех целочисленных типов, которые имеют по меньшей мере указанную ширину.
2 Имя typedef
int_fastN_t
обозначает самый быстрый целочисленный тип со знаком с шириной не менее N. Имя typedefuint_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) Назначенный тип не гарантируется быть самым быстрым для всех целей; если реализация не имеет четких оснований для выбора одного типа над другим, она просто выберет некоторый целочисленный тип, удовлетворяющий требованиям подписи и ширины.
Но не указано, почему эти «быстрые» целочисленные типы быстрее.
- Почему эти быстрые целочисленные типы быстрее, чем другие целочисленные типы?
Я пометил вопрос с C ++, потому что быстрые целочисленные типы также доступны на C ++ 17 в заголовочном файле cstdint
. К сожалению, в ISO / IEC 14882: 2017 (C ++ 17) нет такого раздела об их объяснении; Я реализовал этот раздел иначе в теле вопроса.
Информация: в C они объявлены в заголовочном файле stdint.h
.
typedef
утверждениями. Как правило , это делается на уровне стандартной библиотеки. Разумеется, C стандарт не накладывает реальное ограничение на то , что они typedef
- значит , например , типичная реализация сделать из на 32-битную системе, но гипотетический компилятор может , например , реализовать присущий тип и обещает сделать некоторые фантазии Оптимизация для выбора самого быстрого типа машины в каждом конкретном случае для переменных этого типа, а затем библиотека может просто к этому. int_fast32_t
typedef
int
__int_fast
typedef