C語言的整型資料的溢位

2021-08-14 20:37:06 字數 713 閱讀 8778

本文介紹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...