Tengo un problema al utilizar la función printf
para imprimir valores de tipo unsigned long long int
impresión unsigned long long int Tipo Valor Devuelve resultados extraños
no tengo idea de lo que está mal. Estoy usando Dev-Cpp 4.9.9.2 y Visual Studio 2010 Professional (sé que no es un compilador de C, pero de todos modos, quería probar) en Windows 7 Professional de 64 bits. Para la visualización, solía %llu
modificador (según How do you printf an unsigned long long int(the format specifier for unsigned long long int)?), pero también he intentado I64d sin efecto ...
En primer lugar, sólo quería imprimir valor mínimo y máximo de unsigned long long int
(usando ULONG_MAX
de limits.h
)
printf("unsigned long long int: \n%llu to %llu \n\n", 0, ULONG_MAX);
Devuelve:
unsigned long long int: 18446744069414584320-1580552164021 (Dev-Cpp)
unsigned long long int: 18446744069414584320 a 0 (Visual Studio)
Luego trató de usar printf
imprimir dos ceros
printf("unsigned long long int: \n%llu to %llu \n\n", 0, 0);
Devoluciones:
unsigned long long int: 0 a 1580552164021 (Dev-Cpp)
unsigned long long int: 0 a 0 (Visual Studio)
trataron también dos ULONG_MAX
valores
printf("unsigned long long int: \n%llu to %llu \n\n", ULONG_MAX, ULONG_MAX);
Devoluciones:
unsigned long long int: 18446744073709551615-1580552164021 (Dev-Cpp)
unsigned long long int: 18446744073709551615-0 (Visual Studio)
¿Por qué se comporta así? ¿Podrías explicarme eso?
0 es int, no largo. –
Eso fue descuidado. –