关于printf打印unsigned char变量的疑问
摘自STC串口例程里的"输出unsigned char 类型,可以使用%bu、%bx", 请问使用printf打印无符号char类型的变量值有什么特定要求吗?我今天遇到一个奇怪的现象,调试程序时,为了方便观察变量,使用printf()输出到串口,但是数据总是和实际对不上,后来我特意测试了一下,例如设定变量 u8 AA=14,BB=15,CC=16, 如果使用printf("AA=%bu,BB=%bu,CC=%bu\r\n",AA,BB,CC);输出的结果竟然时 AA=14,BB=0,CC=15,如果单独打印输出变量如:printf("AA=%bu",AA);printf("BB=%bu",BB);printf("CC=%bu",CC); 结果就又正常了,请问这是什么情况?可能的一个情况,,BB这个变量在别的地方被改变了吧,,这得看看整个工程了。
但从这两种写的语法上应该没什么问题。。{:4_200:} _奶咖君_ 发表于 2023-12-21 15:41
可能的一个情况,,BB这个变量在别的地方被改变了吧,,这得看看整个工程了。
但从这两种写的语法上应该没 ...
我检查过,没有修改变量值的代码,所以我现在都是分开打印,或者使用整型也不出现这种情况,char类型就不行,估计和printf预留的位数有关 llyymm 发表于 2023-12-22 15:12
我检查过,没有修改变量值的代码,所以我现在都是分开打印,或者使用整型也不出现这种情况,char类型就不 ...
问一下 你的编译的内存模式用的large模式还是small模式... _奶咖君_ 发表于 2023-12-22 15:15
问一下 你的编译的内存模式用的large模式还是small模式...
XSmall
llyymm 发表于 2023-12-22 15:30
XSmall
XSmall 是C251的东西么? 要么就是这种模式下 编译器的限制,换成large试一试?要么就是这个变量存到了寄存器上,加一个xdata试一试?
这个是我keil编译时的设置
这个是我代码写的,,printf那行直接从你那里复制过来的。
运行结果 嗯嗯,我也去试试
_奶咖君_ 发表于 2023-12-22 15:50
这个是我keil编译时的设置
这个是我代码写的,,printf那行直接从你那里复制过来的。
我现在用的是STC32G系列的,所以使用C521
按照你说的改了设置,重新建了一个简单的工程,结果还是一样的,改成printf("aa=%u,bb=%u,cc=%u)没有问题。
页:
[1]
2