今天碰到一个小问题,以为很简单,结果掉坑。
先说我遇到的问题:
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