Impressão não assinada longa longa int Tipo de valor retorna resultados estranhos

Eu tenho um problema ao usar oprintf função para imprimir valores do tipounsigned long long int

Eu não tenho ideia do que está errado. Eu estou usando Dev-Cpp 4.9.9.2 e Visual Studio 2010 Professional (eu sei que não é compilador C, mas de qualquer maneira, queria tentar) no Windows 7 Professional de 64 bits. Para exibir, eu usei%llu modificador (de acordo comComo você imprime um long long int não assinado (o especificador de formato para unsigned long long int)?) mas eu também tentei I64d sem efeito ...

Em primeiro lugar, queria apenas imprimir o valor mínimo e máximo deunsigned long long int (usandoULONG_MAX delimits.h)

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

Retorna:

não longo long int: 18446744069414584320 a 1580552164021(Dev-Cpp)

não muito longa longa int: 18446744069414584320 a 0(Estúdio visual)

Então eu tentei usarprintf imprimir dois zeros

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

Retorna:

longa sem assinatura int longo: 0 a 1580552164021(Dev-Cpp)

longa sem assinatura int longo: 0 a 0(Estúdio visual)

Também tentei doisULONG_MAX valores

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

Retorna:

não muito longa longa int: 18446744073709551615 to 1580552164021(Dev-Cpp)

não muito longa longa int: 18446744073709551615 a 0(Estúdio visual)

Por que se comporta assim? Você poderia me explicar?

questionAnswers(4)

yourAnswerToTheQuestion