有符號型別與無符號型別值範圍

2022-02-05 14:46:06 字數 453 閱讀 6002

以char為例

最小值為:signed char p = 0x80;

最大值為:signed char q = 0x7f;

p,最高為1時表示為負數,絕對值為2^7次方

0x80+0x7f=0xff=-1

面試題int為4位元組

unsigned int p=6;

signed int q=-20;

p+q的十六進製制為多少

p=0x00000006

十進位制運算:q=-1-19

十六進製制運算:q=0xffffffff-0x13=0xffffffec

p+q = 0x00000006+0xffffffec=0xfffffff2

表示為有符號數:0xffffffff-0xfffffff2=13

0xfffffff2 = 0xffffffff-13 = -14

表示為無符號數:自己算

有符號型別與無符號型別之間的轉換

void foo void unsigned int a 6 int b 20 a b 6 puts 6 puts 6 printf b x n b b 0xffffffec 這個問題測試你是否懂得c語言中的整數自動轉換原則 這無符號整型問題的答案是輸出是 6 原因是當表示式中存在有符號型別和無符號...

有符號與無符號

最高位為1,表示這個數為負數 最高位為0,表示這個數為正數 include int main 執行結果 正數的補碼為正數本身 負數的補碼為負數的絕對值各位取反後加1 8位整數5的補碼為 0000 0101 8位整數 7的補碼為 1111 1001 16位整數20的補碼為 0000 0000 0001...

無符號與有符號

一,小精度往大精度轉換。1.1c語言中比int小的整型 包括short unsigned short unsigned char和char 在運算中都要轉換成int然後進行運算 unsigned char a unsigned char b a b 10,a和b分別先轉換成int,再計算 1.2同精...