W ISO / IEC 9899: 2018 (C18) podano w 7.20.1.3:
7.20.1.3 Najszybsze typy całkowite o minimalnej szerokości
1 Każdy z poniższych typów oznacza typ całkowity, który jest zwykle najszybszy 268) do działania z wszystkimi typami liczb całkowitych, które mają co najmniej określoną szerokość.
2 Nazwa typedef
int_fastN_t
określa najszybszy typ liczby całkowitej o szerokości co najmniej N. Nazwa typedefuint_fastN_t
oznacza najszybszy typ liczby całkowitej bez znaku o szerokości co najmniej N.3 Wymagane są następujące typy:
int_fast8_t
,int_fast16_t
,int_fast32_t
,int_fast64_t
,uint_fast8_t
,uint_fast16_t
,uint_fast32_t
,uint_fast64_t
Wszystkie pozostałe typy tego formularza są opcjonalne.
268) Nie można zagwarantować, że wskazany typ będzie najszybszy we wszystkich celach; jeśli implementacja nie ma wyraźnych podstaw do wyboru jednego typu nad drugim, po prostu wybierze typ całkowity spełniający wymagania dotyczące podpisu i szerokości.
Nie wiadomo jednak, dlaczego te „szybkie” typy całkowite są szybsze.
- Dlaczego te szybkie typy liczb całkowitych są szybsze niż inne typy liczb całkowitych?
Oznacziłem pytanie C ++, ponieważ typy szybkich liczb całkowitych są również dostępne w C ++ 17 w pliku nagłówkowym cstdint
. Niestety w ISO / IEC 14882: 2017 (C ++ 17) nie ma takiej sekcji na temat ich wyjaśnienia; W innym przypadku zastosowałem tę sekcję w treści pytania.
Informacja: W C są zadeklarowane w pliku nagłówkowym stdint.h
.
typedef
stwierdzenia. Tak zazwyczaj , gdy jest dokonywane na poziomie podstawowym biblioteki. Oczywiście, C Standard stawia nie realne ograniczenie co typedef
do - tak na przykład typowa realizacja jest, aby od na systemie 32-bitowym, ale hipotetyczny kompilator mógł na przykład wdrożyć wewnętrzną typ i obiecuję zrobić wymyślnej optymalizacje w celu wybrania najszybszego typu komputera dla poszczególnych przypadków dla zmiennych tego typu, a następnie biblioteka może to zrobić. int_fast32_t
typedef
int
__int_fast
typedef