Impresión sin firma larga larga int Tipo de valor devuelve resultados extraños
Tengo un problema al utilizar elprintf
Función para imprimir valores de tipo.unsigned long long int
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 intentarlo) en Windows 7 Professional de 64 bits. Para mostrar, utilicé%llu
modificador (según¿Cómo se imprime un int long long sin firmar (el especificador de formato para int long long sin firmar)?) pero también probé I64d sin efecto ...
En primer lugar, solo quería imprimir el valor mínimo y máximo deunsigned long long int
(utilizandoULONG_MAX
desdelimits.h
)
printf("unsigned long long int: \n%llu to %llu \n\n", 0, ULONG_MAX);
Devoluciones:
sin firmar largo largo int: 18446744069414584320 a 1580552164021(Dev-Cpp)
sin firmar long long int: 18446744069414584320 a 0(Estudio visual)
Entonces traté de usarprintf
para imprimir dos ceros
printf("unsigned long long int: \n%llu to %llu \n\n", 0, 0);
Devoluciones:
sin firmar largo largo int: 0 a 1580552164021(Dev-Cpp)
sin firmar largo largo int: 0 a 0(Estudio visual)
También probé dosULONG_MAX
valores
printf("unsigned long long int: \n%llu to %llu \n\n", ULONG_MAX, ULONG_MAX);
Devoluciones:
sin firmar largo largo int: 18446744073709551615 a 1580552164021(Dev-Cpp)
sin firmar long long int: 18446744073709551615 a 0(Estudio visual)
¿Por qué se comporta así? ¿Me lo podrías explicar?