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