Perbedaannya terletak pada ketepatan dan ketersediaannya.
The doc sini mengatakan:
tipe integer unsigned dengan lebar persis 8, 16, 32 dan 64 bit masing-masing ( disediakan hanya jika implementasi mendukung tipe secara langsung ):
uint8_t
uint16_t
uint32_t
uint64_t
Dan
tipe integer unsigned unsigned tercepat dengan lebar minimal 8, 16, 32 dan 64 bit masing-masing
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
Jadi perbedaannya cukup jelas yaitu uint32_tjenis yang memiliki bit persis 32 , dan implementasi harus menyediakannya hanya jika ia memiliki jenis dengan persis 32 bit, dan kemudian dapat mengetikkan jenis itu sebagai uint32_t. Artinya, uint32_tmungkin atau mungkin tidak tersedia .
Di sisi lain, uint_fast32_tadalah tipe yang memiliki setidaknya 32 bit, yang juga berarti, jika sebuah implementasi dapat mengetikef uint32_tseolah- uint_fast32_t olah menyediakan uint32_t. Jika tidak tersedia uint32_t, maka uint_fast32_tbisa menjadi typedef jenis apa pun yang memiliki setidaknya 32bit.