_奶咖君_ 发表于 2023-12-22 19:22:40

哦嗨,,,Keil C51的编译器中是这样介绍的,,,用起来也是没问题的,,,C251可能就没有这种说发了吧...
我的我的之前MDK上没有这种问题,,,可能在C251上已经不一样了, C51上需要加%bu这样的...能用了就行{:4_167:}

LAOXU 发表于 2023-12-22 21:22:43

llyymm 发表于 2023-12-22 17:21
按照你说的改了设置,重新建了一个简单的工程,结果还是一样的,改成printf("aa=%u,bb=%u,cc=%u)没有问题。 ...

我想到一种可能,251 是 16位机, 基本单位是 int, 默认都是 自动扩展到 int , 数据前面加强制转换, 应该可行 !

u8 AA=14,BB=15,CC=16

printf("AA=%bu,BB=%bu,CC=%bu\r\n",(u8)AA,(u8)BB,(u8)CC);

llyymm 发表于 2023-12-23 14:55:05

LAOXU 发表于 2023-12-22 21:22
我想到一种可能,251 是 16位机, 基本单位是 int, 默认都是 自动扩展到 int , 数据前面加强制转换, 应该 ...

嗯,有可能,我这就测试一下{:4_165:}

llyymm 发表于 2023-12-23 15:06:52

LAOXU 发表于 2023-12-22 21:22
我想到一种可能,251 是 16位机, 基本单位是 int, 默认都是 自动扩展到 int , 数据前面加强制转换, 应该 ...

确实解决了问题,但是“AA = %bu”,感觉这个b的意义不强了! 不管怎样你还是一针见血的指出了问题{:4_250:}

LAOXU 发表于 2023-12-23 16:16:19

llyymm 发表于 2023-12-23 15:06
确实解决了问题,但是“AA = %bu”,感觉这个b的意义不强了! 不管怎样你还是一针见血的指出了问题 ...

解决就好 {:victory:}

haishi28 发表于 2024-4-12 11:01:09

看到最后,是不是最终归结到数据在RAM里对齐方式上了?
页: 1 [2]
查看完整版本: 关于printf打印unsigned char变量的疑问