歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++如何確定常量的類型

C++如何確定常量的類型

日期:2017/3/1 9:21:13   编辑:Linux編程

程序的聲明將特定的整型變量的類型告訴了C++編譯器,但編譯器是如何知道常量類型的呢?假設在程序中使用常量來表示一個數字:

Cout<<"year="<<1492<<"\n";

程序將把1492儲存為int,long還是其他整型呢?答案是,除非有理由存儲為其他類型(如使用了特殊的後綴來表示特定的類型,或者是太大,不能存儲為int),否則c++將整型常量存儲為int類型。

首先來看看後綴。後綴是放在數字常量後面的字母,用於表示類型。整數後面的l或L後綴表示該整數為long常量,u或U後綴表示unsigned int常量,ul(可以采用任何一種順序,大寫小寫均可)表示unsigned long常量(由於小寫l看上去像1,因此應使用大寫L作後綴)。例如,在int為16位、long為32位的系統上,數字22022被存儲為int,占16位,數字22022L被存儲為long,占32位。同樣,22022LU和22022UL都被存儲為unsigned long。

接下來考察長度。在c++中,對十進制整數采用的規則,與十六進制和八進制稍微有些不同。對於不帶後綴的十進制整數,將使用下面幾種類型中能夠存儲該數的最小類型來表示:int、long或unsigned long。在int為16位,long為32位的計算機系統上,20000被表示int類型,40000被表示為long類型,3000000000被表示為unsigned long類型。對於不帶後綴的十六進制或八進制整數,將使用下面幾種類型中能夠存儲該數的最小類型來表示int、unsigned int、long或unsigned long。在將40000表示為long的計算機系統中,十六進制數0x9C40(40000)將被表示為unsigned int。這是因為十六進制常用來表示內存地址,而內存地址是沒有符號的,因此,unsigned int比long更適合用來表示16位的地址。

Copyright © Linux教程網 All Rights Reserved