Sự khác biệt nằm ở tính chính xác và tính khả dụng của chúng.
Tài liệu ở đây nói:
kiểu số nguyên không dấu với chiều rộng chính xác tương ứng là 8, 16, 32 và 64 bit ( chỉ được cung cấp nếu việc triển khai hỗ trợ trực tiếp kiểu ):
uint8_t
uint16_t
uint32_t
uint64_t
Và
kiểu số nguyên không dấu nhanh nhất có chiều rộng ít nhất 8, 16, 32 và 64 bit tương ứng
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
Vì vậy, sự khác biệt là khá rõ ràng đó uint32_t
là một kiểu có các bit chính xác 32
và việc triển khai chỉ nên cung cấp cho nó nếu nó có kiểu có chính xác 32 bit và sau đó nó có thể gõ kiểu đó là uint32_t
. Điều này có nghĩa, uint32_t
có thể hoặc không có thể có sẵn .
Mặt khác, uint_fast32_t
là một kiểu có ít nhất 32 bit, điều đó cũng có nghĩa là, nếu một triển khai có thể gõ uint32_t
như uint_fast32_t
thể nó cung cấp uint32_t
. Nếu nó không cung cấp uint32_t
, thì uint_fast32_t
có thể là một typedef của bất kỳ loại nào có ít nhất 32
bit.