ใน ISO / IEC 9899: 2018 (C18) แสดงไว้ภายใต้ 7.20.1.3:
7.20.1.3 ประเภทจำนวนเต็มความกว้างต่ำสุดที่เร็วที่สุด
1 แต่ละประเภทต่อไปนี้กำหนดประเภทจำนวนเต็มที่มักจะเร็วที่สุด268)เพื่อใช้งานกับประเภทจำนวนเต็มทั้งหมดที่มีความกว้างอย่างน้อยที่ระบุ
2 ชื่อ typedef
int_fastN_t
กำหนดประเภทจำนวนเต็มที่เร็วที่สุดที่ลงนามด้วยความกว้างอย่างน้อย N ชื่อ typedefuint_fastN_t
กำหนดประเภทจำนวนเต็มที่ไม่ได้ลงชื่อที่เร็วที่สุดที่มีความกว้างอย่างน้อย N3 ประเภทต่อไปนี้จำเป็นต้องใช้:
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