1. 程式人生 > >一起talk C栗子吧(第三十四回:C語言實例--巧用溢出計算最值)

一起talk C栗子吧(第三十四回:C語言實例--巧用溢出計算最值)

gcc 空間 代碼 讓我 計算 max value 其他 存儲 點擊


各位看官們。大家好,上一回中咱們說的是巧用移位的樣例,這一回咱們說的樣例是:巧用溢出計算最值。

閑話休提,言歸正轉。讓我們一起talk C栗子吧!



大家都知道,程序中的變量都有一個取值範圍,這個範圍也計算機和編譯器都有關系。

我們舉個實際的例

子進行說明:在32位的計算機上,假設使用4個字節存儲int類型的變量也就是說使用了32位的存儲空間。

這時int類型變量的取值範圍是:負2的32次方到正2的32次方-1,詳細的數值是-2147483648到2147483647。

假設把不在這個範圍內的數值賦值給int類型的變量,那麽就會發生溢出。這也是我們在敲代碼的時候需

要註意的地方,不然程序中發生了溢出就會導致錯誤的結果。

只是溢出有個特點:最大值加一就會由於溢

出變成最小值;反之。最小值減一就會由於溢出變成最大值。我們能夠巧妙地利用溢出的這個特點。來求

各種類型變量的最值。


看官們。正文中就不寫代碼了。具體的代碼放到了我的資源中,大家能夠點擊這裏下載使用。

在代碼中我

們計算的是int類型變量的最值。

大家能夠自己擴展。計算其他類型變量的最值。


我們當前的編程環境是這種:計算機是X86結構,操作系統為32位的Linux Mint系統,編譯器為GCC,

版本號是4.8.2.在這種編程環境下,使用4個字節存儲int類型的變量。所以得到的結果例如以下:

the min value of int is:-2147483648

the max value of int is:2147483647


假設大家的編程環境和我的不一樣,可能會得到不同的運算結果。只是有一點是能夠肯定的。假設使用4個

字節存儲int類型的變量,那麽不論在哪種環境下。都和上面的結果一樣。


各位看官,關於巧用溢出計算最值的樣例咱們就講到這裏。欲知後面還有什麽樣例,且聽下回分解。


一起talk C栗子吧(第三十四回:C語言實例--巧用溢出計算最值)