Dalam ISO / IEC 9899: 2018 (C18), dinyatakan di bawah 7.20.1.3:
7.20.1.3 Jenis integer lebar minimum minimum
1 Masing-masing tipe berikut menunjuk tipe integer yang biasanya tercepat 268) untuk beroperasi dengan semua tipe integer yang setidaknya memiliki lebar yang ditentukan.
2 Nama typedef
int_fastN_t
menunjuk tipe integer tercepat yang ditandatangani dengan lebar setidaknya N. Nama typedefuint_fastN_t
menunjuk tipe integer tercepat yang tidak ditandatangani dengan lebar setidaknya N.3 Jenis-jenis berikut ini diperlukan:
int_fast8_t
,int_fast16_t
,int_fast32_t
,int_fast64_t
,uint_fast8_t
,uint_fast16_t
,uint_fast32_t
,uint_fast64_t
Semua tipe lain dari formulir ini adalah opsional.
268) Jenis yang ditunjuk tidak dijamin tercepat untuk semua keperluan; jika implementasi tidak memiliki alasan yang jelas untuk memilih satu jenis di atas yang lain, itu hanya akan memilih beberapa jenis bilangan bulat memenuhi persyaratan ketelitian dan lebar.
Tetapi tidak disebutkan mengapa tipe integer "cepat" ini lebih cepat.
- Mengapa tipe integer cepat ini lebih cepat daripada tipe integer lainnya?
Saya menandai pertanyaan dengan C ++, karena tipe integer cepat juga tersedia di C ++ 17 di file header cstdint
. Sayangnya, dalam ISO / IEC 14882: 2017 (C ++ 17) tidak ada bagian seperti itu tentang penjelasan mereka; Saya telah menerapkan bagian itu di badan pertanyaan.
Informasi: Di C, mereka dideklarasikan di file header stdint.h
.
typedef
pernyataan. Jadi biasanya , ini dilakukan di tingkat perpustakaan standar. Tentu saja, C menempatkan standar tidak nyata pembatasan apa yang mereka typedef
ke - jadi misalnya implementasi khas adalah untuk membuat int_fast32_t
suatu typedef
dari int
pada sistem 32-bit, tapi compiler hipotetis bisa misalnya menerapkan __int_fast
jenis intrinsik dan berjanji untuk melakukan beberapa mewah optimisasi untuk memilih jenis mesin tercepat berdasarkan kasus per kasus untuk variabel dari jenis itu, dan kemudian perpustakaan bisa typedef
melakukannya.