В чем разница между `short int` и `int16_t`?

Смотрел курс по C++ на Coursera и там рассказали, что можно подключить библиотеку cstdlib и использовать типы данных типа: int16_t, uint16_t, int64_t, uint64_t и т.д. Недавно узнал что в плюсах также как же писать просто short int, long int и т.д.

Вопрос собственно в том, что есть ли разница между ними или это одно и то же?


Ответы (2 шт):

Автор решения: dIm0n

short int и long int - стандартные языковые типы размеров не менее 16 и не менее 32, соответственно.

int16_t и int32_t - опционально поддерживаемые алиасы типов из стандартной библиотеки размеров ровно 16 и ровно 32, соответственно.

Кстати, char8_t, char16_t и char32_t относятся именно к первому типу (т.е. ключевые слова нефиксированного размера), несмотря на название.

Доки:

https://en.cppreference.com/w/cpp/language/types

https://en.cppreference.com/w/cpp/types/integer

→ Ссылка
Автор решения: HolyBlackCat

В зависимости от компилятора и системы, под которую вы компилируете, размер встроенных типов (short, int, long, и т.д., в противоположность intXX_t, uintXX_t) может отличаться.

В стандарте (или еще где-то) можете почитать, в каких пределах могут меняться размеры этих типов, но на практике обычно short - 2 байта, int - 4, long - 4 или 8, long long - 8.

А у intXX_t и uintXX_t, очевидно, размер всегда одинаковый.

→ Ссылка