Trong ISO / IEC 9899: 2018 (C18), nó được nêu trong 7.20.1.3:
7.20.1.3 Các loại số nguyên có chiều rộng tối thiểu nhanh nhất
1 Mỗi loại sau đây chỉ định một loại số nguyên thường nhanh nhất 268) để hoạt động với tất cả các loại số nguyên có ít nhất chiều rộng đã chỉ định.
2 Tên typedef
int_fastN_t
chỉ định loại số nguyên được ký nhanh nhất với chiều rộng ít nhất là N. Tên typedefuint_fastN_t
chỉ định loại số nguyên không dấu nhanh nhất có chiều rộng ít nhất là N.3 Các loại sau là bắt buộc:
int_fast8_t
,int_fast16_t
,int_fast32_t
,int_fast64_t
,uint_fast8_t
,uint_fast16_t
,uint_fast32_t
,uint_fast64_t
Tất cả các loại khác của hình thức này là tùy chọn.
268) Loại được chỉ định không được đảm bảo là nhanh nhất cho mọi mục đích; nếu việc triển khai không có căn cứ rõ ràng để chọn một loại so với loại khác, thì nó sẽ chỉ chọn một số loại số nguyên thỏa mãn các yêu cầu về độ ký và độ rộng.
Nhưng không nói rõ tại sao các loại số nguyên "nhanh" này nhanh hơn.
- Tại sao các loại số nguyên nhanh này nhanh hơn các loại số nguyên khác?
Tôi đã gắn thẻ câu hỏi với C ++, vì các loại số nguyên nhanh cũng có sẵn trong C ++ 17 trong tệp tiêu đề của cstdint
. Thật không may, trong ISO / IEC 14882: 2017 (C ++ 17) không có phần như vậy về lời giải thích của họ; Tôi đã thực hiện phần đó trong phần khác của câu hỏi.
Thông tin: Trong C, chúng được khai báo trong tệp tiêu đề của stdint.h
.
typedef
tuyên bố. Vì vậy, thông thường , nó được thực hiện ở cấp thư viện tiêu chuẩn. Tất nhiên, hạn chế các puts tiêu chuẩn C không có thực về những gì họ typedef
đến - vì vậy ví dụ như một thực hiện điển hình là làm cho int_fast32_t
một typedef
số int
trên một hệ thống 32-bit, nhưng một trình biên dịch giả có thể ví dụ như thực hiện một __int_fast
kiểu nội và hứa sẽ làm một số ưa thích tối ưu hóa để chọn loại máy nhanh nhất trên cơ sở từng trường hợp cho các biến của loại đó, và sau đó thư viện có thể chỉ cần typedef
điều đó.