Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Целочисленные типы данных C++

В чём отличие между long int - int, signed char - __int8 и т.д. отсюда https://msdn.microsoft.com/ru-ru/library/s3f49ktz.aspx и почему некоторые функции возвращают long int, а другие int?


Ответ

Типы данных вроде int и long int могут иметь различный размер в зависимости от архитектуры. Стандарт лишь ограничивает их относительный размер, например, sizeof(int) <= sizeof(long int). Так как неравенство нестрогое, то размеры могут совпадать.
На платформе x86/x64 эти типы имеют вполне конкретный размер, например, sizeof(int) == 4. Однако на других архитектурах размер может отличаться.
Разница между int и long int историческая. На 16-битных платформе sizeof(int) == 2 и sizeof(long int) == 4. Соответственно, для функций тех времён разница существенна.
Типы данных __int16, __int32 имеют гарантированный размер в 16 и 32 бита независимо от архитектуры.

Комментариев нет:

Отправить комментарий