«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Гарантировано ли, что `long` имеет не менее 32 бит в C++?

Гарантировано ли, что `long` имеет не менее 32 бит в C++?

Опубликовано 7 ноября 2024 г.
Просматривать:453

Is `long` Guaranteed to Have at Least 32 Bits in C  ?

Гарантированно ли long имеет 32 бита?

Несмотря на распространенные предположения, основанные на стандарте C, возникает вопрос, гарантированно ли long будет иметь не менее 32 бит. Стандарт классифицирует фундаментальные целочисленные типы как:

sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)

Однако многие предполагают, что на основании этого иерархия, длина должна иметь 32 бита. Однако в Стандарте прямо указано, что количество битов в байте определяется реализацией. Стейнбах утверждал, что длина гарантированно равна 32 битам. Он основывал это утверждение на неявном пределе диапазона значений, которые может содержать long (от LONG_MIN до LONG_MAX).

Стандарт C ссылается на стандарт C (18.3.2), который определяет:LONG_MIN ≤ -2^31 1 LONG_MAX ≥ 2^31 - 1

Подключение к 32-битному представлению

LONG_MIN ≤ -2^31   1
LONG_MAX ≥ 2^31 - 1

Представление с дополнением до двух:

Если отрицательные числа представлены в дополнении до двух, для хранения LONG_MIN или LONG_MAX требуется 32 бита.

  1. Явный бит знака:Если бит знака используется для отрицательных чисел, общий объем памяти по-прежнему требует 32 бита.
  2. Вывод
  3. Хотя стандарт C явно не требует, чтобы long имел 32 бита, требование минимального диапазона (от LONG_MIN до LONG_MAX) неявно требует этого. Это связано с тем, что для представления этих значений требуется либо 32 бита памяти, либо механизм, зависящий от реализации, с эквивалентной емкостью значений. Следовательно, можно сделать вывод, что C гарантирует, что long имеет как минимум 32 бита.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3