Подтвердить что ты не робот

Является ли С++ 11 длинным долго, по крайней мере, 64 бит?

Здесь говорится здесь и здесь, которые набирают long long, по крайней мере, до int и имеет не менее 64 бит. Я рассматривал раздел C.31 стандарта §3.9.1 "Основные типы", и я не могу найти ссылку на 64 бита. Все, что я могу найти, это то, что он как минимум длиннее long int, который по крайней мере длиннее int. Стандарт перечисляет long long как стандартный целочисленный тип, в отличие от расширенного, поэтому мне интересно, истинно ли это утверждение, что long long содержит не менее 64 бит. И если это так, то где это указано? Обратите внимание, что я говорю только о стандарте С++ 11 long long.

4b9b3361

Ответ 1

Стандарт С++ ссылается на стандарт C для этого, см. [c.limits]. LLONG_MAX определяется в <climits> с тем же значением, что и C <limits.h> LLONG_MAX. И это то, что C должен сказать:

5.2.4.2.1 Размеры целых типов <limits.h>

Значения, приведенные ниже, должны быть заменены постоянными выражениями, подходящими для использования в директивах #if предварительной обработки. [...] Их определяемые реализацией значения должны быть равны или больше по величине (по абсолютной величине) тем, которые показаны, с тем же знаком.

[...]

- максимальное значение для объекта типа long long int

LLONG_MAX +9223372036854775807 // 2 63 -1

Подписанный тип, который должен быть способен представлять значение 9223372036854775807, требует 64 бит или более.