#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);
}
コンパイル結果:
255
-1
65535
-1
4294967295
-1
-1
Press any key to continue
%ld、%d、%uは、すべてフォーマット指定子のタイプです。その機能は、フォーマット指定子で指定されたフォーマットに従って入力または出力データを入力または出力することです。
(1)%ldは、データが10進数の符号付き長整数として入力または出力されることを示します。
(2)%dは、データが10進数の符号付き整数として入力または出力されることを示します。
(3)%uは、データが10進数の符号なし整数として入力または出力されることを示します。
つまり:
sprintf(num、 "%d"、(unsigned int)(0xFFFFFFFF));を次のように変更します。
sprintf(num、 "%u"、(unsigned int)(0xFFFFFFFF));