C C 的整數溢位陷阱

2021-07-28 09:27:58 字數 405 閱讀 4410

對於程式中出現的整數常量(不是整數變數),在c、c++中是用什麼資料型別的儲存的呢?

答:用從下面列表中匹配到的第乙個能容納該整數常量的整數型別儲存

1. int

2. long int

3. long long int

比如說對於程式中出現50000,int就可以容納,用int表示就好。

由此引發的問題:整數溢位問題

即:若干個整數相乘,可能每個整數都可以用int表示,但是乘積卻不能用int表示,由於預設的型別還是int,可能會引發整數溢位。

例:long int x=4000*1024*1024;

該式中的每個數字都可以用int表示,故乘積也用int表示,雖然x是long int ,但是中間運算結果已經導致了整數溢位。

整數溢位,如何判斷整數溢位

c語言中存在兩類整數算術運算,有符號運算和無符號運算。在無符號運算裡,沒有了符號位,所以是沒有溢位的概念的。所有的無符號運算都是以2的n次方為模。如果算術運算子的乙個運算元是有符號書,另乙個是無符號數,那麼有符號數 會被轉換為無符號數 表示範圍小的總是被轉換為表示範圍大的 那麼溢位也不會發生。但是,...

整數溢位,如何判斷整數溢位

c語言中存在兩類整數算術運算,有符號運算和無符號運算。在無符號運算裡,沒有了符號位,所以是沒有溢位的概念的。所有的無符號運算都是以2的n次方為模。如果算術運算子的乙個運算元是有符號書,另乙個是無符號數,那麼有符號數 會被轉換為無符號數 表示範圍小的總是被轉換為表示範圍大的 那麼溢位也不會發生。但是,...

整數溢位,如何判斷整數溢位

c語言中存在兩類整數算術運算,有符號運算和無符號運算。在無符號運算裡,沒有了符號位,所以是沒有溢位的概念的。所有的無符號運算都是以2的n次方為模。如果算術運算子的乙個運算元是有符號書,另乙個是無符號數,那麼有符號數 會被轉換為無符號數 表示範圍小的總是被轉換為表示範圍大的 那麼溢位也不會發生。但是,...