这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【经验分享】51单片机KEILC51printf的特殊用法

共1条 1/1 1 跳转至

【经验分享】51单片机KEILC51printf的特殊用法

工程师
2020-08-17 22:07:47     打赏

今天碰到一个小问题,以为很简单,结果掉坑。


先说我遇到的问题:

u8 index = 5;

printf(" index = %d",index);


原本希望的结果是:  index=5, 但实际结果是: 5xx (x随机)


后来,查了资料,才发现是这样的解决方案:

KEIL里扩展出了b,h,l来对输入字节宽的设置:

(1)b八位

(2)h十六位(默认)

(3)l三十二位


在Keil C51中用printf输出一个单字节变量时要使用%bd,如

unsigned char counter;

printf(“Current count: %bd\n”, counter);//输出8位”十进制有符号整数”

printf(“Current count: %bx\n”, counter);//输出8位”无符号以十六进制表示的整数”


而在标准C语言中都是使用%d:

printf(“Current count: %d\n”, counter);


综上所述,我需要修改成这样:

u8 index = 5;

printf(" index = %bd",index); 

这样输出就是我想要的结果! index =5 







关键词: printf     经验     keil    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]