#include "string.h"
#include "stdlib.h"
void main()
{
unsigned char num[10] = {0};
memset(num, 0, 10);
sprintf(num,"%d",(unsigned char)(0xFF));
printf("%s\n",num);
sprintf(num,"%d",(signed char)(0xFF));
printf("%s\n",num);
sprintf(num,"%d",(unsigned short)(0xFFFF));
printf("%s\n",num);
sprintf(num,"%d",(signed short)(0xFFFF));
printf("%s\n",num);
sprintf(num,"%u",(unsigned int)(0xFFFFFFFF));
printf("%s\n",num);
sprintf(num,"%d",(unsigned int)(0xFFFFFFFF));
printf("%s\n",num);
sprintf(num,"%d",(signed int)(0xFFFFFFFF));
printf("%s\n",num);
}
Resultado da compilação:
255
-1
65535
-1
4294967295
-1
-1
Press any key to continue
% ld,% d,% u são todos os tipos no especificador de formato. Sua função é inserir ou enviar dados de entrada ou saída de acordo com o formato especificado pelo especificador de formato.
(1)% ld indica que os dados são introduzidos ou emitidos como um número inteiro longo com sinal decimal.
(2)% d indica que os dados são inseridos ou gerados como um número inteiro com sinal decimal.
(3)% u indica que os dados são recebidos ou enviados como um número inteiro decimal não assinado .
Isto é:
Altere sprintf (num, "% d", (sem assinatura int) (0xFFFFFFFF));
sprintf (num, "% u", (sem assinatura int) (0xFFFFFFFF));