Ads 468x60px

##EasyReadMore##

23 2月, 2018

[C] 顯示字元時被自動補上 FF 了

最近發現一個問題,把 buf 傳到另一個函數,前面就被補上 ffff 了

image

原因就是 buf 在本來的函式是宣告 unsigned char,但是傳到另一個函式卻是宣告成 char 而已,

因為0xbe已經是負數 printf是使用int  所以char擴展成int 負數前面就會補1,

signed char的範圍-128~127, unsigned char的範圍0~255
signed char的最高bit就是代表正負號,擴展成int的話就會幫你把正負號往前複製 所以int的最高bit也會變成1。

但如果把原本的函式改成 char ,也是會在前面補上 FF。

但其實這只是顯示的問題,並不影響實際的值。

0 意見:

張貼留言

 
Blogger Templates