sprintf的格式化数据的时候,unsigned int 型%d打印为负数的解决办法

#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表示数据按十进制有符号长型整数输入或输出。

(2)%d表示数据按十进制有符号整型数输入或输出。

(3)%u表示数据按十进制无符号整型数输入或输出。

即:

改sprintf(num,"%d",(unsigned int)(0xFFFFFFFF)); 为:

sprintf(num,"%u",(unsigned int)(0xFFFFFFFF));

发布了105 篇原创文章 · 获赞 30 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/happygrilclh/article/details/105657289