В чем разница между `short int` и `int16_t`?
Смотрел курс по C++ на Coursera и там рассказали, что можно подключить библиотеку cstdlib и использовать типы данных типа: int16_t, uint16_t, int64_t, uint64_t и т.д. Недавно узнал что в плюсах также как же писать просто short int, long int и т.д.
Вопрос собственно в том, что есть ли разница между ними или это одно и то же?
Ответы (2 шт):
short int и long int - стандартные языковые типы размеров не менее 16 и не менее 32, соответственно.
int16_t и int32_t - опционально поддерживаемые алиасы типов из стандартной библиотеки размеров ровно 16 и ровно 32, соответственно.
Кстати, char8_t, char16_t и char32_t относятся именно к первому типу (т.е. ключевые слова нефиксированного размера), несмотря на название.
Доки:
В зависимости от компилятора и системы, под которую вы компилируете, размер встроенных типов (short, int, long, и т.д., в противоположность intXX_t, uintXX_t) может отличаться.
В стандарте (или еще где-то) можете почитать, в каких пределах могут меняться размеры этих типов, но на практике обычно short - 2 байта, int - 4, long - 4 или 8, long long - 8.
А у intXX_t и uintXX_t, очевидно, размер всегда одинаковый.