在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

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

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

如果打印的是char,應(yīng)該在格式說(shuō)明里加入長(zhǎng)度描述符hh

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

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

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

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

如果使用%x和%o輸出時(shí),應(yīng)該先把你的數(shù)據(jù)轉(zhuǎn)為二進(jìn)制的形式,然后再轉(zhuǎn)為8進(jìn)制或者是16進(jìn)制,這樣轉(zhuǎn)出來(lái)的數(shù)是不會(huì)帶+-號(hào)的,而是根據(jù)實(shí)際在內(nèi)存中存放的數(shù)據(jù)來(lái)顯示

當(dāng)我輸出無(wú)符號(hào)的時(shí)候,-2的值是4294967294,轉(zhuǎn)換成十六進(jìn)制就是0xffffffe

圖片描述

2017年10月15日 05:06