回覆列表
  • 1 # yfccvvbhg

    本質上兩種型別都佔一個位元組。作為字元使用時,都是儲存字元的ASCII碼。比如:unsigned char uc="a";char c="a";printf("%d %d",uc,c);結果為: a a作為整數使用時,兩種型別的取值範圍就不同了。unsigned char 可取0至255,而char可取-128至+127。比如:unsigned char uc=255;char c=255;printf("%d %d",uc,c);結果為: 255 -1原因是沒有用unsigned修飾的char型別系統將其儲存的一個位元組值(8位2進位制)看作為一個有符號數來處理,最高位為0時,表示正數,為1時表示負數,表示負數時的值為餘下7位二進位制每一位取反後整體+1。比如上例中:char c=255; 表面看來超過了char的範圍,但系統並不是這樣處理的。系統將十進位制數255轉為二進位制數11111111進行儲存。在計算或列印時,發現最高位為1,是負數,餘下7位1111111取反後為0000000,加1後為0000001,轉為十進位制數等於1,最後系統當作-1看待。所以此時按整數列印c時,輸出為-1。總的來說,系統最終儲存的都是二進位制數11111111,只是在參與運算或顯示的時候,unsigned char和char才會有所區別。

  • 中秋節和大豐收的關聯?
  • 簡述成品入庫完整流程?