Drukowanie bez znaku long long int Typ wartości Zwraca Dziwne wyniki

Mam problem podczas używaniaprintf funkcja do drukowania wartości typuunsigned long long int

Nie mam pojęcia, co się stało. Używam Dev-Cpp 4.9.9.2 i Visual Studio 2010 Professional (wiem, że nie jest to kompilator C, ale mimo to chciałem spróbować) w Windows 7 Professional 64-bit. Do wyświetlania użyłem%llu modyfikator (zgodnie zJak wydrukować unsigned long long int (specyfikator formatu dla unsigned long long int)?) ale próbowałem też I64d bez efektu ...

Po pierwsze, chciałem wydrukować minimalną i maksymalną wartośćunsigned long long int (za pomocąULONG_MAX zlimits.h)

printf("unsigned long long int: \n%llu to %llu \n\n", 0, ULONG_MAX);

Zwraca:

unsigned long long int: 18446744069414584320 do 1580552164021(Dev-Cpp)

unsigned long long int: 18446744069414584320 do 0(Visual Studio)

Potem próbowałem użyćprintf wydrukować dwa zera

printf("unsigned long long int: \n%llu to %llu \n\n", 0, 0);

Zwraca:

unsigned long long int: 0 do 1580552164021(Dev-Cpp)

unsigned long long int: 0 do 0(Visual Studio)

Próbowałem także dwóchULONG_MAX wartości

printf("unsigned long long int: \n%llu to %llu \n\n", ULONG_MAX, ULONG_MAX);

Zwraca:

unsigned long long int: 18446744073709551615 do 1580552164021(Dev-Cpp)

unsigned long long int: 18446744073709551615 do 0(Visual Studio)

Dlaczego tak się zachowuje? Czy mógłbyś mi to wyjaśnić?

questionAnswers(4)

yourAnswerToTheQuestion