uint16_t
является более строгим, чем uint_fast16_t
и uint_least16_t
. Мало того, что последние два могут быть шире, чем 16 бит, они также могут иметь биты заполнения (биты, которые не учитывают значение, такое как биты четности).
Эта разница еще более заметна для подписанных типов. Здесь точные типы ширины должны использовать дополнение к двум для представления отрицательных значений.