1. 程式人生 > >C++確定常量的資料型別

C++確定常量的資料型別

C++如何確定常量的資料型別

C++中的資料型別

本文部分內容來源於《C++ primer plus》 部分內容來源於網路,部分內容是自己的個人經驗

一般情況下,我們在程式中會宣告特定型別的變數,比如:

    bool 布林型

  char 字元型 8位

  wchar_t 寬字元型 16位

  short 短整型 16位

  int 整型 16位

  long 長整型 32位

  float 單精度浮點型 6為有效數字

  double 雙精度浮點型 10位有效數字

  long double 擴充套件精度浮點型 10位有效數字

但是對於另外一些情形,沒有顯示的告訴計算機這是什麼型別的話,該如何處理呢? 當然,如果一個程式設計師寫出一個試圖讓計算機來猜測程式型別的程式碼,顯然不是優秀的程式碼。但是能夠理解這一些對於讀懂程式,找出bug,快速解決問題,成為一個優秀的程式猿,是很有必要的!

cout<<"my salary is:"<<10000<<endl;

那麼問題來了,10000 到底在計算機中當做什麼型別來處理呢?
《C++ primer plus》 中如是說
除非有理由儲存為其他型別(例如使用了特殊字尾來表示特定型別,或者值太大,不能儲存為int 整型),否則C++將常量儲存為int整型。

C++資料型別的確定

字尾

字尾是放在常量後面的字母,用於表示型別
l或者L用來表示整數為 long型常量,u或者U字尾表示unsigned int 常量,ul 表示 unsigned long 常量(由於小寫的 l 看起來像數字 1,因此建議寫字尾的時候使用大寫字母L)。

長度

在C++中,對十進位制採用 的規則與十六進位制略有不同。
對於不帶字尾的十進位制資料:將使用下面幾種資料型別中能夠儲存該數的最小型別:int, long ,long long 。
對於不帶字尾的十六進位制資料:將使用下面幾種型別中能夠儲存該數的最小型別:int , unsigned int ,long , unsigned long , long long 。

例如:在 int 為16位,long為32位的機器中。
十進位制數字 20000 被表示為int型,40000被表示為long型別。3000000000 被表示為long long 型別
十六進位制 0X9C40 (4000)被表示為unsigned int,**這是因為十六進位制常用來表示記憶體地址,而記憶體地址是沒有符號的,因此,unsigned int 比long 更適合用來表示十六位的地址。

char型別:字元和小整數

char型別是專門為數字和字母設計的,字母的儲存於數字的儲存不是一個概念,對於計算機來說,兩者完全不同。程式語言通過字母的編碼值解決了這一問題,因此,char是另外一種整型,很多系統的字母大都不超過128個,因此,char型別足夠來表示系統中的所有符號。char常用來處理字元,但也可以當做比short更小的整型來使用,以節約空間。