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

在使用sprintf进行格式化输出时,遇到unsigned int转换为%d显示负数的问题。实际上,%d适用于有符号整型,而%u适用于无符号整型。解决方案是将%d改为%u,例如:将sprintf(num, "%d", (unsigned int)(0xFFFFFFFF)); 更改为 sprintf(num, "%u", (unsigned int)(0xFFFFFFFF));。需要注意,不同编译器如keil和VC6对char、short int等类型的默认处理可能不同,可能影响输出结果。" 126277840,10891302,Python串口自动化测试与日志处理,"['Python', '串口通信', '自动化测试']
摘要由CSDN通过智能技术生成
#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表示数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值