2008-10-18 3 views
2

Мне нужно использовать целые числа без знака, которые могут охватывать более 4 байтов, какой тип я должен использовать?Какой тип для целого числа более 4 байтов?

PS Извините за «noobism», но это все: D

NB: мне нужно целые числа, потому что я должен делать разделения и ухода только для целых частей и таким образом ИНТ полезны

ответ

6

долго долго, 64-битное целое ... here вы можете найти некоторые ссылки о типах данных и диапазонах ...

+0

Спасибо, не знал, что я могу использовать «двойной» длинный: D – luiss 2008-10-18 19:02:50

+1

Используйте , как описано в ответе CesarB для * портативного * решения. GCC не понимает __int64, MSVC6 (и, возможно, 2003) не понимают «длинный длинный», и ни один из них не является стандартом. – ephemient 2008-10-18 19:48:09

1

неподписанный долго долго - это долго, по крайней мере 64 бит

11

Просто введите <stdint.h> и используйте int64_t и uint64_t (так как вы хотите без знака, вы хотите uint64_t).

В этом заголовке есть несколько других полезных вариантов, таких как наименьшие варианты (uint_least64_t - тип не менее 64 бит), а быстрые варианты (uint_fast64_t - самый быстрый целочисленный тип с не менее чем 64 битами). Также очень полезны intptr_t/uintptr_t (достаточно большие для указателя void *) и intmax_t/uintmax_t (самый большой тип).

И если по какой-то причине ваш компилятор не имеет <stdint.h> (с IIRC это стандарт C, а не C++ один а), вы можете использовать подталкивания-х boost/cstdint.hpp (которые вы можете использовать, даже если у вас есть a <stdint.h>, так как в этом случае он должен просто переслать заголовок компилятора).

4

Выбирай:

long long (-9.223.372.036.854.775.808 к 9.223.372.036.854.775.807)

unsigned long long: (0 до 18.446.744.073.709.551.615)

2

Если вам нужно действительно длинные целые числа (произвольной точности), можно также попробовать библиотека gmp, которая также предоставляет интерфейс на основе класса C++.

Смежные вопросы