unsigned char 數值溢出問題

#include


int main(void)
{
    unsigned char i = 256;
int a;
a = i + 256;
i = a;
printf("%d\n",i);
printf("%d\n",a);
  
return 0;
}


/*
在VC++中的輸出結果是:
0
256
Press any key to continue
這說明了 語句 unsigned char 申請的空間 所能存儲的數字的範圍(也就是unsigned char類型所能表示的數的範圍)是 0 — 255(十進制) 一共 256(2的8次方)個
如果說你給 unsigned char 類型的變量賦給大於 255的值 或者 小於0 的值 的話,就會出現溢出,它的規則就像時鐘一樣,時鐘中的最大數字是12,如果
是13點的話,那麼時針就會指向1,同樣的道理,如果你給 unsigned char 類型的變量 賦 256的話,那麼實際上 這個變量存的值爲 0 ,在這個例子當中
int 類型的變量所能表示的值 的範圍爲 -2147483648 — 2147483647 (十進制) 而256 顯然在範圍之類,所以輸出的就是 256 


同樣的道理
    unsigned char i = 0;
int a;
a = i - 1;
i = a;
printf("%d\n",i);
printf("%d\n",a);
輸出結果爲 255
                      -1
*/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章