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?

Respuestas a la pregunta(4)

Su respuesta a la pregunta