Какой тип для целого числа более 4 байтов?
Вопрос
Я должен использовать целые числа без знака, которые могут занимать более 4 байтов, какой тип я должен использовать?
PS Извините за " noobism " но это все: D
Примечание: мне нужны целые числа, потому что я должен делать деления и заботиться только о целочисленных частях, и этот способ int полезен
Решение
длинный длинный , 64-разрядное целое число ... здесь вы можете найти некоторые ссылки на типы данных и диапазоны ...
Другие советы
Просто включите < stdint.h > и используйте int64_t и uint64_t (так как вы хотите unsigned, вы хотите 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's boost / cstdint.hpp (который вы можете использовать, даже если у вас есть < stdint.h > ;, поскольку в этом случае он должен просто пересылать в заголовок компилятора) . р>
Выберите:
long long
(& # 8211; 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)
Если вам нужны действительно длинные целые числа (произвольная точность), вы также можете попробовать библиотеку gmp , которая также предоставляет интерфейс на основе классов C ++.
long unsigned long - длина не менее 64 бит