Цитата(Метценгерштейн @ Apr 28 2017, 16:28)

Для чего используют fast?
Согласно С99:
- uint_fast8_t - тип данных, который содержит не менее 8 бит и операции с которым являются самыми быстрыми на данной платформе
- uint_least8_t - самый маленький тип данных для данной платформы, который содержит не менее 8 бит
- uint8_t - тип данных, который содержит ровно 8 бит, однако имеет место специфика работы с платформой - если разрядность не позволяет, то такого типа для данной платформы существовать не должно (в отличие от двух вышеперечисленных)
Хороший пример приведён в ответе
тут и в сообщениях форумчан.
Использование таких типов с фиксироваными размерами(uint8_t, int32_t etc.) является предпочтительным относительно типов unsigned char, unsigned int etc. - это указано многими правилами кодирования (MISRA C, например). Посмотреть как те или иные типы фиксированого размера соотносятся с типами данных plain C для конктретной платформы можно посмотреть в заголовке <stdint.h>.