Печать без знака 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)

Почему он так себя ведет? Не могли бы вы объяснить это мне?

Ответы на вопрос(4)

Ваш ответ на вопрос