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
在编写udp程序解析数据的时候,发现接收的char型变量为0xFF,但是使用printf后打印为0xFFFFFFFF,调试程序查找原因后发现使用char时,对于printf来说其值为0xFFFFFFFF。原因是%x要求的是无符号整形变量,你传入的是char型,这里有一个整数提升的问题。char作为有符号数,提升到无符号整数,由于char的值为0xFF,那么提升时,前面的填充位为1。所以提升后其值为0xFFFFFFFF
解决办法:
把char类型强制转换为unint8_t,使用unint8_t时,是无符号提升,前面的填充为0,所以提升后的值为0xFF
相关文章推荐
- 使用printf修改变量的值 —— VS2008中使用%n输出遇到的问题及解决方法
- 使用printf修改变量的值 —— VS2008中使用%n输出遇到的问题及解决方法
- C语言中printf格式化输出函数
- 关于Android Logcat打印输出中文乱码问题的解决方法
- 【疑问】有关C语言中printf函数的输出和格式的问题
- C语言中printf格式化输出函数
- C语言中printf格式化输出函数(转载)
- C语言中printf格式化输出函数
- C语言中函数返回局部变量的方法
- C语言中printf格式化输出函数
- C语言的printf函数(格式输出函数)
- C语言中printf格式化输出函数
- Eclipse对printf()不能输出到控制台的解决方法
- printk 命令行无打印输出解决方法
- 关于C语言中的printf()方法格式化输出
- Keil MDK环境下使用printf函数的解决方法
- 小技巧解决printf不能以二进制方式打印输出的问题
- printf()函数实现串口打印的配置方法
- C语言的printf函数(格式输出函数)
- C语言中printf格式化输出函数