Какой тип для целого числа более 4 байтов? - PullRequest
2 голосов
/ 18 октября 2008

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

PS Извините за "нубизм", но это все: D

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

Ответы [ 5 ]

11 голосов
/ 18 октября 2008

Просто включите и используйте int64_t и uint64_t (поскольку вы хотите unsigned, вы хотите uint64_t).

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

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

6 голосов
/ 18 октября 2008

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

4 голосов
/ 18 октября 2008

Выберите:

long long (–9 223 372 036 854 775 808–2 223 372 036 854 775 807)

unsigned long long: (от 0 до 18 446 744 073 709 551 615)

2 голосов
/ 19 октября 2008

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

1 голос
/ 18 октября 2008

длинная длина без знака - длина не менее 64 бит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...