Нужно переменной присвоить значение 600851475143, но ни один из типов данных языка Си не подходит. Что делать?
3 ответа
64-битные числа никто не отменял, @Иван Кущёв:
#include <stdio.h>
int main()
{
long long i = 600851475143LL;
printf("%lld\n", i);
return 0;
}
-
c90 не гарантирует наличие
long long
. Это может иметь значение, если используется старая версия Visual Studio на Виндах, которая плохо поддерживает c99, который гарантирует наличиеlong long
и что его размер по меньшей мере 64-bit (можно попробовать "%I64" и__int64
в этом случае).– jfs31 окт 2014 в 14:56
Используйте другой компилятор, в котором есть 64-битные типы данных. Или ключи у существующего.
Или использовать две переменные, в одной хранить n старших разрядов, а в другой - N-n разрядов, где N - общее число разрядов числа.