F物的自我救赎(笑) 2023-07-13 17:20 采纳率: 73.8%
浏览 25
已结题

单片机串口小问题,我想要输出汉字,所以把汉字分为了高十六位和第十六位,但问题是为什么unsigned无符号还可以是-27,而且输出的数据压根对不上原来的汉字

单片机串口小问题,我想要输出汉字,所以把汉字分为了高十六位和第十六位,但问题是为什么unsigned无符号还可以是-27,而且输出的数据压根对不上原来的汉字

img

  • 写回答

3条回答 默认 最新

  • qllaoda 2023-07-13 17:40
    关注

    因为你用的是%d,输出就按有符号数解释,同一个内存值,按有符号解释是负数,按无符号解释是正数,这是很正常的情况。
    你想输出为无符号,应该用%ud,后面的强制类型转换都没必要做。
    而且你的格式化输出是以整数方式输出,而不是字符方式,自然不可能得到你期望的输出。
    而且从你的代码看,你似乎对汉字的编码还存在误解,你代码里的a[0]只是“宇”的第一个内码,只是一个char类型的值,char可不存在什么高16位低16位。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月21日
  • 已采纳回答 7月13日
  • 创建了问题 7月13日