1. 程式人生 > >c語言中printf函式列印char型變數0xFF,輸出為0xFFFFFFFF的解決方法

c語言中printf函式列印char型變數0xFF,輸出為0xFFFFFFFF的解決方法

問題描述:

在編寫udp程式解析資料的時候,發現接收的char型變數為0xFF,但是使用printf後列印為0xFFFFFFFF,除錯程式查詢原因後發現使用char時,對於printf來說其值為0xFFFFFFFF。原因是%x要求的是無符號整形變數,你傳入的是char型,這裡有一個整數提升的問題。char作為有符號數,提升到無符號整數,由於char的值為0xFF,那麼提升時,前面的填充位為1。所以提升後其值為0xFFFFFFFF

解決辦法:

把char型別強制轉換為uint8_t,使用uint8_t時,是無符號提升,前面的填充為0,所以提升後的值為0xFF