Длинна ли C ++ 11 действительно по крайней мере 64 бита?

Это говоритВот а такжеВот этот типlong long по крайней мере, так долго, какint и имеетno fewer than 64 bits, Я просматривал стандарт C ++ 11 & # xA7; 3.9.1, раздел «Основные типы», и не могу найти ссылку на 64-разрядную версию. Все, что я могу найти, это то, что по крайней мере так долгоlong int, по крайней мере, так долго, какint, Стандартные спискиlong long какstandard целочисленный тип, в отличие отextended один, так что мне интересно, является ли это утверждение, чтоlong long держит как минимум 64 бита это правда. И если это так, то где это указано? Обратите внимание, что я говорю о стандарте C ++ 11long long только.

 jalf07 апр. 2012 г., 11:04
@ErvinBosenbacher: стандарт также указываетminimum размеры для встроенных типов. Точный тип определяется реализацией, да, но реализация не может просто составлять числа
 ervinbosenbacher07 апр. 2012 г., 11:01
Стандарт, конечно, правильный. Это просто говорит вам, каковы различия в размере между различными типами, такими как short, int, long, long long. Фактический размер, т. Е. 64 бит или нет, зависит от платформы. Как C ++ компиляторы доступны для всех видов платформ. Вы не можете найти фактический размер, специфичный для платформы, компилятора, в определенных заголовочных файлах.
 ervinbosenbacher07 апр. 2012 г., 21:08
Хорошо. Спасибо за разъяснения.
 ervinbosenbacher07 апр. 2012 г., 11:09
@jalf: Спасибо, да, это верно :) Limits.h - это файл.
 juanchopanza07 апр. 2012 г., 11:57
@ErvinBosenbacher в ссылках, которые я цитировал, прямо упоминается о 64 битах независимо от платформы, что кажется странным и поэтому я задаю вопрос.

Ответы на вопрос(1)

Решение Вопроса

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

5.2.4.2.1 Sizes of integer types <limits.h>

The values given below shall be replaced by constant expressions suitable for use in #if preprocessing directives. [...] Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.

[...]

-- maximum value for an object of type long long int

LLONG_MAX +9223372036854775807 // 263 -1

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

 juanchopanza07 апр. 2012 г., 12:05
Спасибо! Я не очень знаком с C99. Стандарт определяет, что происходит, скажем, на платформе 32 или 16 бит?
 juanchopanza07 апр. 2012 г., 12:24
Это то, что мне нужно было знать, спасибо!
 11 окт. 2014 г., 17:28
@herohuyongtao Я ценю редактирование и сделал еще несколько настроек, чтобы сделать его максимально приближенным к форматированию, используемому в стандарте.
 07 апр. 2012 г., 12:23
@juanchopanza Он делает это, не делая этого:long long поддержка не является обязательной, поэтому, если аппаратное обеспечение не способно выполнять 64-разрядные операции, оно должно каким-то образом эмулировать их. Это так же, какlong поддержка на 16-битной платформе.

Ваш ответ на вопрос