#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 de la compilación:
255
-1
65535
-1
4294967295
-1
-1
Press any key to continue
% ld,% d,% u son todos los tipos en el especificador de formato. Su función es ingresar o emitir los datos de entrada o salida de acuerdo con el formato especificado por el especificador de formato.
(1)% ld indica que los datos se ingresan o salen como un entero largo con signo decimal.
(2)% d indica que los datos se ingresan o salen como un entero con signo decimal.
(3)% u indica que los datos se ingresan o salen como un entero decimal sin signo .
Eso es:
Cambie sprintf (num, "% d", (unsigned int) (0xFFFFFFFF)); a:
sprintf (num, "% u", (unsigned int) (0xFFFFFFFF));