Сколько байтов unsigned long long
?
Это то же самое, что unsigned long long int
?
Сколько байтов без знака длинное?
Ответ 1
Резюме: это 64 бит или больше.
unsigned long long
совпадает с unsigned long long int
. Его размер зависит от платформы, но гарантируется стандартом C (ISO C99) как минимум 64 бита. В C89 не было long long
, но, видимо, даже MSVC поддерживает его, поэтому он довольно портативен.
В текущем стандарте С++ (выпущенном в 2003 году) нет long long
, хотя многие компиляторы поддерживают его как расширение. Предстоящий стандарт С++ 0x поддержит его, и его размер будет таким же, как у C, поэтому не менее 64 бит.
Вы можете получить точный размер в байтах (8 бит на типичных платформах) с выражением sizeof(unsigned long long)
. Если вы хотите ровно 64 бита, используйте uint64_t
, который определен в заголовке <stdint.h>
вместе с кучей родственных типов (доступен в C99, С++ 11 и некоторых текущих компиляторах С++).
Ответ 2
Красота С++, как и C, заключается в том, что размер этих вещей определяется реализацией, поэтому нет правильного ответа без указания используемого вами компилятора. Эти два одинаковые? Да. "long long" - синоним "long long int", для любого компилятора, который будет принимать оба.
Ответ 3
Он должен быть не менее 64 бит. Кроме того, что это реализация определена.
Строго говоря, unsigned long long
не является стандартным в С++ до стандарта С++ 0x. unsigned long long
является "спецификатором простого типа" для типа unsigned long long int
(поэтому они являются синонимами).
Набор типов long long
также находится в C99 и является общим расширением для компиляторов С++ даже до стандартизации.
Ответ 4
Используйте оператор sizeof
, он даст вам размер типа, выраженного в байте. Один байт - восемь бит. См. Следующую программу:
#include <iostream>
int main(int,char**)
{
std::cout << "unsigned long long " << sizeof(unsigned long long) << "\n";
std::cout << "unsigned long long int " << sizeof(unsigned long long int) << "\n";
return 0;
}