ความแตกต่างอยู่ที่ความแน่นอนและความพร้อมใช้งาน
docนี่พูดว่า:
ชนิดจำนวนเต็มไม่ได้ลงนามที่มีความกว้างตรง 8, 16, 32 และ 64 บิตตามลำดับ ( ให้เฉพาะถ้าการดำเนินการสนับสนุนโดยตรงชนิด ):
uint8_t
uint16_t
uint32_t
uint64_t
และ
ประเภทจำนวนเต็มไม่ได้ลงนามที่ไม่ได้ลงนามที่เร็วที่สุดโดยมีความกว้างอย่างน้อย 8, 16, 32 และ 64 บิตตามลำดับ
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
ดังนั้นความแตกต่างสวยมากชัดเจนว่าuint32_t
เป็นชนิดที่มีว่า 32
บิตและการดำเนินการควรให้มันแต่ถ้ามันมีประเภทที่มีตรง 32 บิตแล้วก็สามารถ typedef uint32_t
ประเภทว่า วิธีนี้uint32_t
อาจจะหรืออาจจะไม่สามารถใช้ได้
ในทางกลับกันuint_fast32_t
เป็นประเภทที่มีอย่างน้อย 32 บิตซึ่งหมายความว่าหากการใช้งานอาจพิมพ์ดีฟuint32_t
ราวกับuint_fast32_t
ว่ามีuint32_t
จะให้หากไม่มีให้แสดงuint32_t
ว่าuint_fast32_t
อาจเป็น typedef ประเภทใดก็ได้ที่มี32
บิตเป็นอย่างน้อย