ความแตกต่างอยู่ที่ความแน่นอนและความพร้อมใช้งาน
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บิตเป็นอย่างน้อย