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_tmenunjuk tipe integer tercepat yang ditandatangani dengan lebar setidaknya N. Nama typedefuint_fastN_tmenunjuk 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_tSemua 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.
typedefpernyataan. Jadi biasanya , ini dilakukan di tingkat perpustakaan standar. Tentu saja, C menempatkan standar tidak nyata pembatasan apa yang mereka typedefke - jadi misalnya implementasi khas adalah untuk membuat int_fast32_tsuatu typedefdari intpada sistem 32-bit, tapi compiler hipotetis bisa misalnya menerapkan __int_fastjenis 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 typedefmelakukannya.
