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

Сколько байтов без знака длинное?

Сколько байтов unsigned long long? Это то же самое, что unsigned long long int?

4b9b3361

Ответ 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;
}