C++如何定義無窮大和無窮小


int型變量的取值范圍:[-2^31, 2^31 - 1] -> [-2147483648, 2147483647]

0x7fffffff = 2147483647 = (2^31 - 1) = (1 << 31) - 1  

0x3fffffff = 1073741823 = (2^30 - 1) = (1 << 30) - 1

0x3f3f3f3f = 1061109567

0x7fffffff = 2147483647,恰好等於int型變量的上界,所以在一些情況下用0x7fffffff表示無窮大是一個很好的選擇

但是在求圖的最短路徑時,往往需要進行無窮大數的比較而0x7fffffff再加上一個正數會溢出,成為負數,所以一般情況下,定義為0x3fffffff或者0x3f3f3f3f 就能滿足要求

 

無窮小:0xc0c0c0c0 = -1061109568

 

定義方式:

#define INF1 0x7fffffff
#define INE2 0x3fffffff
#define INF3 0x3f3f3f3f
#define INF4 0xc0c0c0c0  //無窮小
const int INF5 = 0x7fffffff;
const int INF6 = 0x3fffffff;
const int INF7 = 0x3f3f3f3f;
const int INF8 = 0xc0c0c0c0; //無窮小

 

或者

 

如果是int,用INT_MAX表示正無窮,INT_MIN表示負無窮,需要包含頭文件limits.h;

如果是double,用DBL_MAX表示正無窮,DBL_MIN表示負無窮,需要包含文件float.h。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM