獲取c或者c++里面的數據類型的范圍


有時候我們在coding的過程中經常需要知道某個變量所能表示的最大或者最小值,在程序設計的基礎課上老師肯定也都講過,只是那么多的數值沒辦法都記住,下面是我的一些經驗,這些也是一個程序員應該掌握的基本知識。

下面只以int類型舉例,默認 int 32位。

首先要明白的是,整數采用的是補碼表示方法,忘了補碼概念的可以參考http://baike.baidu.com/view/377340.htm 。對於有符號整數,最高位是符號位,1表示負數,0表示正數。+0和-0的補碼均為:所有位全部置0。

int 的最大值二進制表示為:01111111 11111111 11111111 11111111    即2^31-1

int的最小值二進制表示為:10000000 00000000 00000000 00000000  即-2^31 (補碼表示的負數的絕對值求法:將包括符號位在內的所有位取反,然后加1,得到的結果視作一個無符號整數即為該負數的絕對值)

c++中std命名空間中定義了每個類型的最大、最小值等;對於浮點型數據還定義了對應的無限大的數

cout<<std::numeric_limits<int>::max()<<endl;  int最大值

cout<<std::numeric_limits<int>::min()<<endl;   int最小值

cout<<std::numeric_limits<double>::infinity()<<endl;  double 的無限大

c語言中的頭文件limits.h(c++對應頭文件為climits)定義了整形數據類型的表達值范圍(宏定義),該頭文件定義的宏可以參考http://www.cplusplus.com/reference/climits/

包含了該頭文件后可以輸出如下:

cout<<INT_MAX<<endl;  int最大值
cout<<INT_MIN<<endl;  int最小值

float.h 定義了double float的最大最小值,具體參考http://www.cplusplus.com/reference/cfloat/

---------------------------------------------------------

如果想要查看某個整形數據的各個二進制位的值,可以用如下函數

void fun( Type n)  //type是某個整形類型如int long char short等,使用時要具體定義

{
  bitset<8*sizeof(n)>b(n);
  cout<<b<<endl;
}

【版權聲明】轉載請注明出處 http://www.cnblogs.com/TenosDoIt/archive/2013/04/17/3026232.html


免責聲明!

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



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