unsigned char 數值溢位問題

2021-07-13 02:25:10 字數 654 閱讀 2833

#include

int main(void)

/*在vc++中的輸出結果是:

0256

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*/

浮點值的上溢和下溢(其他數值型別相似)

上文說到,float的取值範圍為10 37 10 38。如果數字大小超過10 38會怎麼樣呢?通過本文標題,我們大概可以猜出,這就是乙個浮點值的上溢 emmmm 我彷彿是個沙雕 當計算導致數字過大,超過當前型別的表達範圍時,就會發生上溢。現在c語言規定,會給toobig賦乙個值表示無窮大的特定值,而...

char 與 unsigned char的本質區別

原文 在c中,預設的基礎資料型別均為signed,現在我們以char為例,說明 signed char與unsigned char之間的區別 首先在記憶體中,char與unsigned char沒有什麼不同,都是乙個位元組,唯一的區別是,char的最高位為符號位,因此char能表示 128 127,...

char 與 unsigned char的本質區別

在c中,預設的基礎資料型別均為signed,現在我們以char為例,說明 signed char與unsigned char之間的區別 首先在記憶體中,char與unsigned char沒有什麼不同,都是乙個位元組,唯一的區別是,char的最高位為符號位,因此char能表示 128 127,uns...