У меня возникла проблема при использовании функции printf
для печати значений типа unsigned long long int
. Я понятия не имею, что случилось. Я использую Dev -Cpp 4.9.9.2 и Visual Studio 2010 Professional (. Я знаю, что это не компилятор C, но в любом случае хотел попробовать )на Windows 7 Professional 64 -бит. Для отображения я использовал %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)
Почему оно так себя ведет? Не могли бы вы объяснить это мне?