0x3f3f3f3f(無窮大數)

2021-09-18 05:18:57 字數 331 閱讀 7140

一般定義無窮大數都是inf=99999999,或者0x7f ff ff ff,但是有的時候inf過大,雖然保證了沒有數超過它,但是在需要加上乙個數的時候,inf+a可能會導致溢位,最終變成乙個負數。

而0x3f3f3f3f的數量級也1e9的,(一般題不會給超過1e9的數),在把它當成無窮大的時候,兩個0x3f3f3f3f相加的結果也不會爆int。所以這個數比較合適了。

並且如果開乙個陣列,讓陣列中每個元素的值都為這個無窮大時,可以使用

memset(a, 0x3f, sizeof(a))

它的效果就是int型別的4個位元組中每個位元組都是0x3f,最終這個元素的值也是0x3f3f3f3f。

為什麼無窮大總是0x3f3f3f3f

如果問題中各資料的範圍明確,那麼無窮大的設定不是問題,在不明確的情況下,很多程式 員都取0x7fffffff作為無窮大,因為這是32 bit int的最大值。如果這個無窮大只用於一般的比較 比如求最小值時min變數的初值 那麼0x7fffffff確實是乙個完美的選擇,但是在更多的情況下,0x7fff...

0x3f3f3f3f 程式設計中無窮大常量的設定技巧

如果問題中各資料的範圍明確,那麼無窮大的設定不是問題,在不明確的情況下,很多 程式設計師都取0x7fffffff作為無窮大,因為這是32 bit int的最大值。如果這個無窮大只用於一般的比較 比如求最小值時min變數的初值 那麼0x7fffffff確實是乙個完美的選擇,但是在更多的情況下,0x7f...

關於 0x3f3f3f3f 的問題

0x3f3f3f3f是乙個很有用的數值,它是滿足以下兩個條件的最大整數。1 整數的兩倍不超過 0x7f7f7f7f,即int能表示的最大正整數。2 整數的每8位 每個位元組 都是相同的。我們在程式設計中經常需要使用 memset a,val,sizeof a 初始化乙個陣列a,該語句把數值 val ...