Печать без знака long long int Тип значения возвращает странные результаты
У меня проблема при использованииprintf
функция для печати значений типаunsigned long long int
Я понятия не имею, что не так. Я использую Dev-Cpp 4.9.9.2 и Visual Studio 2010 Professional (я знаю, что это не компилятор C, но все равно хотел попробовать) на 64-битной Windows 7 Professional. Для отображения я использовал%llu
модификатор (согласноКак вы печатаете unsigned long long int (спецификатор формата для unsigned long long int)?) но я тоже пробовал I64d безрезультатно ...
Во-первых, я просто хотел напечатать минимальное и максимальное значениеunsigned long long int
(с помощьюULONG_MAX
отlimits.h
)
printf("unsigned long long int: \n%llu to %llu \n\n", 0, ULONG_MAX);
Возвращает:
unsigned long long int: 18446744069414584320 to 1580552164021 (Dev-Cpp)
unsigned long long int: 18446744069414584320 to 0 (Visual Studio)
Тогда я попытался с помощьюprintf
напечатать два нуля
printf("unsigned long long int: \n%llu to %llu \n\n", 0, 0);
Возвращает:
unsigned long long int: 0 to 1580552164021 (Dev-Cpp)
unsigned long long int: 0 to 0 (Visual Studio)
Также попробовал дваULONG_MAX
ценности
printf("unsigned long long int: \n%llu to %llu \n\n", ULONG_MAX, ULONG_MAX);
Возвращает:
unsigned long long int: 18446744073709551615 to 1580552164021 (Dev-Cpp)
unsigned long long int: 18446744073709551615 to 0 (Visual Studio)
Почему он так себя ведет? Не могли бы вы объяснить это мне?