鍍金池/ 問答/C  C++/ 為什么c語言的char類型變成了4字節(jié)?

為什么c語言的char類型變成了4字節(jié)?

#include<stdio.h>
int main()
{
    char c=-2; 
    //sizeof(c)=1 8個位
    //有符號補碼 應該是
    //1111 1110=0xFE 
    printf("%d\n",sizeof(c));
    printf("%x",c);
    //輸出為  FFFF FFFE  為什么? 
    
    return 0;
}
回答
編輯回答
溫衫

如果打印的是char,應該在格式說明里加入長度描述符hh

printf("%hhx\n", c);

更多長度描述符(hh,h,l,ll ...)參考這里。

2017年11月6日 04:07
編輯回答
茍活

我這里并沒有變4字節(jié),難道是系統(tǒng)或者編譯器的問題?
輸出為 FFFF FFFE 為什么?
%x 不會輸出負數,至于為什么....我查到的資料是

如果使用%x和%o輸出時,應該先把你的數據轉為二進制的形式,然后再轉為8進制或者是16進制,這樣轉出來的數是不會帶+-號的,而是根據實際在內存中存放的數據來顯示

當我輸出無符號的時候,-2的值是4294967294,轉換成十六進制就是0xffffffe

圖片描述

2017年10月15日 05:06