獲取整數的最大值最小值的巨集定義

2021-06-06 09:44:11 字數 944 閱讀 6959

在c/c++程式設計中時常需要使用整數的最大值最小值,通常這兩個常用是跟平台和作業系統有關的,不同的平台會有不同的值,因此可移植的辦法就是推薦使用庫函式提供的常量定義。

(1)類似的常量定義在limits.h和float.h標頭檔案中,可以檢視原始檔獲取類似常量的使用辦法。在標頭檔案中,整數的最值通常是這樣的名字:int_max, int_min,直接使用即可。

(2)當然這兩個最值完全可以通過程式設計實現:

#define max_int ((unsigned)(-1)>>1)

#define min_int (~max_int)

但是,這兩個巨集僅僅是沒有型別的符號,在使用的時候會陷入困境。看下面這段c++程式,輸出結果出乎意料。

#include

#include

#define max_int ((unsigned)(-1)>>1)

#define min_int (~max_int)

int main()

輸出結果是

問題出在:輸出min_int,由於min_int僅僅是個符號,在輸出給cout時就按照cpp的規則以長整數輸出了,因此正確的辦法是

cout << "max_int: " << (int)max_int << "\n"

<< "min_int: " << (int)min_int << endl;

當然最好的辦法還是不要使用#define這個巨集,不安全。

(3)因此,乙個比較好的解決辦法是,直接定義變數

int max_int = ((unsigned)(-1))>>1;

int min_int = ~max_int;

**如下:

#include

int main()

獲取整數的最大值最小值

c c 常需要獲得最大值,最小值,通常這兩個數與平台和作業系統有關,因此可移植的辦法就是推薦使用庫函式提供的常量定義 1.利用語言自定義 類似的常量定義在limits.h和float.h標頭檔案中。在標頭檔案中,整數的最值通常是這樣的名字 int max,int min,直接使用即可。2.自定義變數...

取整數的最大值最小值值,

1 類似的常量定義在limits.h和float.h標頭檔案中,可以檢視原始檔獲取類似常量的使用辦法。在標頭檔案中,整數的最值通常是這樣的名字 int max,int min,直接使用即可。2 當然這兩個最值完全可以通過程式設計實現 define max int unsigned 1 1 defin...

Golang 整數型別最大值和最小值的定義

在寫一道演算法時需要用到int32型別的最大值和最小值,但是查了查在go的標準庫中沒有定義這些變數,所以當需要使用整數型別的最大值和最小值的時候,我們需要自己手動去定義。其最小值是0,那麼二進位制表示就是所有位都為0 const uint min uint 0其最大值二進位制表示所有位數表示為1,通...