В рассуждениях есть ошибка.
Да, стандарт утверждает что тип
int
может иметь размер не меньше 16 бит.
Таблица имеет название "Minimum width", т.е. минимальный размер. Минимальный - это значит что
int
может иметь размер в 16 бит. А может иметь и 64 бита.
В большинстве случаев нам это и не важно. Наоборот даже, нам важна оптимальность, с которой вычисления переходят от операций на памяти к операциям на регистрах. Но есть целый (немалый такой) ряд задач, когда о размере значения нужно не просто думать, а точно его знать и гарантировать при сборке в любых условиях.
Запись в файл, передача по сети, коммуникации с устройствами в составе компьютера (звук, видео, геоданные, низкоуровневый ввод и вывод)... Все это требует соблюдения протоколов, а протоколы требуют строгого соблюдения размеров и выравнивания передаваемых значений.
Ошибка в рассуждениях заключается в том, что ты проводишь нить только от
int32_t
к
int
и дальше к стандарту. В то время как стандарт
определяет и требования к типу
int32_t
тоже.
Тип
int32_t
всегда и для любой модели памяти выбирается таким образом чтобы гарантировать размер в 32 бита.
То что где-то
int32_t
является псевдонимом
int
- это не более чем временное совпадение.