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ć?