您的位置:首页 > 编程语言 > C语言/C++

c语言中printf函数打印char型变量0xFF,输出为0xFFFFFFFF的解决方法

2018-03-02 11:01 465 查看
问题描述:
在编写udp程序解析数据的时候,发现接收的char型变量为0xFF,但是使用printf后打印为0xFFFFFFFF,调试程序查找原因后发现使用char时,对于printf来说其值为0xFFFFFFFF。原因是%x要求的是无符号整形变量,你传入的是char型,这里有一个整数提升的问题。char作为有符号数,提升到无符号整数,由于char的值为0xFF,那么提升时,前面的填充位为1。所以提升后其值为0xFFFFFFFF
解决办法:
把char类型强制转换为unint8_t,使用unint8_t时,是无符号提升,前面的填充为0,所以提升后的值为0xFF
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c