




долго долго, 64-битное целое число ... здесь вы можете найти некоторую справку о типах данных и диапазонах ...
если вам требуется более 4 байтов, это не самый чистый способ.
Фактически, «длинный длинный» является в стандарте C99 и будет в C++ 0x, согласно Википедии.
unsigned long long - не менее 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 boost / cstdint.hpp (который вы можете использовать, даже если у вас есть <stdint. h>, так как в этом случае он должен просто перенаправить в заголовок компилятора).
<stdint.h> находится в C99, а не в старых стандартах C, чего бы он ни стоил. Более того, реализация должна предоставлять uint64_t и int64_t тогда и только тогда, когда она предоставляет соответствующий 64-битный целочисленный тип. Реализация C99 не обязательна, но весьма вероятна.
Сделайте ваш выбор:
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)
Если вам нужны действительно длинные целые числа (произвольной точности), вы также можете попробовать библиотеку GMP, которая также предоставляет интерфейс на основе классов C++.
Используйте <stdint>, как описано в ответе CesarB для решения портативный. GCC не понимает __int64, MSVC6 (и, возможно, 2003) не понимает "long long", и ни то, ни другое не является стандартом.