У ISO / IEC 9899: 2018 (C18) зазначено під 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