本文介紹c語言中的整型資料的溢位情況。
示例**如下:
#include #include #include int main()
上述**的執行結果如下:
sizeof(a) is 4
sizeof(int) is 4
integer b = -2147483648
binary b = 10000000000000000000000000000000
length of string b is 32.
從上述**和執行結果,分析總結如下:
1)當前編譯器為int型別資料分配了4個位元組(對應32位元位),所以有符號int型別變數a和b的取值範圍是-2147483648到2147483647,所以當a取值2147483647,再加1時,就會出現「溢位」的情況,其結果b發生了反轉,變成了-2147483648。a和b的二進位制表示如下:
a: 0111 1111 1111 1111 1111 1111 1111 1111 (共32位)
b: 1000 0000 0000 0000 0000 0000 0000 0000 (共32位)
上述是a、b的二進位制補碼形式(計算機中儲存的都是二進位制的補碼形式)。
2)從b的十進位制數值以及二進位制補碼形式可以知道,最高位1既代表了符號位,也代表了數值位。
0026 整型資料的溢位規律
include intmain for short i 32767 a 0 a 5 i a for char i 127,a 0 a 5 i a for char i 128 a 0 a 5 i a 輸出結果 2147483647 溢位 0 2147483648 溢位 1 2147483647 溢位...
c語言之 整型的隱式轉換與溢位檢測
我們可以通過下面的方式來檢測溢位 if a int max b 我們利用整型的最大值減去其中乙個數,然後與另乙個數進行比較。其中int max定義在limit.h標頭檔案中,它表示整數的最大值。當然,我們還可以通過下面的方式來檢測 if unsigned int a unsigned int b i...
典型的整型溢位行為
假設我們有兩個變數s v short 和us v unsigned short 分別設定為最大的short值,將兩個變數值都加1,看下會出現什麼結果 然後將兩個變數s v short 和us v unsigned short 分別設定為最小的short值,將兩個變數值都減1,看下會出現什麼結果。in...