- C++從入門(mén)到精通(第5版)
- 明日科技編著
- 1858字
- 2023-08-25 11:14:56
2.2 常量及符號(hào)
在程序運(yùn)行過(guò)程中,其值不能改變的量稱為常量。常量可分為整型常量、實(shí)型常量、字符常量、字符串常量和其他常量。

上面代碼通過(guò)cout向屏幕輸出4行內(nèi)容。cout是輸出流,實(shí)現(xiàn)向屏幕輸出不同類型的數(shù)據(jù)。代碼中2009是整型常量,2.14是浮點(diǎn)常量(實(shí)型常量),'a'是字符常量,"Hello World"是字符串常量。
2.2.1 整型常量
整型常量可以分為有符號(hào)整型常量和無(wú)符號(hào)整型常量。
-225代表一個(gè)負(fù)整數(shù),+1024代表一個(gè)正整數(shù),正整數(shù)前面的“+”符號(hào)可以省略,即+1024和1024表示的意義相同。
基本的數(shù)據(jù)類型除了整型外,還有長(zhǎng)整型和短整型,因此整型常量也有長(zhǎng)整型常量和短整型常量之分。長(zhǎng)整型常量不可以無(wú)限大,它的最大值是有限定的。根據(jù)CPU寄存器位數(shù)以及編譯器的不同,最大的整型常量值也會(huì)不同。
注意
4294967295是32位CPU寄存器以及Visual C++ 6.0編譯器所允許的最大正整數(shù)。
整型常量在編寫(xiě)代碼時(shí)不僅可以寫(xiě)成十進(jìn)制整數(shù)形式,也可以寫(xiě)成十六進(jìn)制或八進(jìn)制整數(shù)形式。
(1)八進(jìn)制整型常量必須以0開(kāi)頭,即以0作為八進(jìn)制數(shù)的前綴,每位取值范圍是0~7。八進(jìn)制數(shù)通常是無(wú)符號(hào)數(shù)。
例如,016、0101、0127是合法的八進(jìn)制整數(shù);256、0396不是合法的八進(jìn)制整數(shù)。因?yàn)椋?56無(wú)前綴0,代表十進(jìn)制整型常量;0396中數(shù)字9不是八進(jìn)制應(yīng)有的取值。
(2)十六進(jìn)制整型常量的前綴為0X或0x,其數(shù)碼取值范圍為0~9,以及A~F或a~f。
例如,0X2A1、0XC5、0XFFFF是合法的十六進(jìn)制整數(shù);5A、0X3N不是合法的十六進(jìn)制整數(shù)。因?yàn)?A無(wú)前綴0X,0X3N中含有非十六進(jìn)制數(shù)N。
注意
合法主要指能通過(guò)編譯器編譯,非法或不合法指不能通過(guò)編譯器編譯。
2.2.2 實(shí)型常量
實(shí)型常量也稱為浮點(diǎn)數(shù),只能采用十進(jìn)制形式表示。它有兩種表示形式,即小數(shù)表示法和指數(shù)表示法。
1.小數(shù)表示法
小數(shù)表示法由整數(shù)部分和小數(shù)部分組成,兩部分每位取值范圍都是0~9,中間用小數(shù)點(diǎn)分隔。例如,0.0、2.25、0.00596、5.0、536.、-5.3、-0.002等均為合法的實(shí)型常量。
整數(shù)部分和小數(shù)部分有時(shí)可以不必同時(shí)出現(xiàn),例如.2和2.。
2.指數(shù)表示法
指數(shù)表示法也稱為科學(xué)記數(shù)法,指數(shù)部分以符號(hào)“e”或“E”開(kāi)始,但必須是整數(shù),并且符號(hào)“e”或“E”兩邊都必須有一個(gè)數(shù)。例如,1.2e20和-2.4e-2。其中,1.2e20表示的數(shù)為1.2×1020。
E5、3E2.5不是合法的實(shí)型常量,E5是E之前無(wú)數(shù)字,3E2.5是E后面有小數(shù)。
說(shuō)明
在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字,稱為規(guī)范化的指數(shù)形式。
L代表長(zhǎng)整型。L可以是大寫(xiě)也可以是小寫(xiě),在編寫(xiě)代碼時(shí)可以不寫(xiě)。此類符號(hào)還有U和u代表無(wú)符號(hào)。例如,255U或255u都代表無(wú)符號(hào)整型常量255。
符號(hào)L或l與符號(hào)U或u可以一起使用。例如,65536lu代表無(wú)符號(hào)長(zhǎng)整型常量65536。
C++編譯系統(tǒng)把這種帶有L或U形式表示的浮點(diǎn)數(shù)按雙精度常量處理,在內(nèi)存中占8個(gè)字節(jié)。如果在實(shí)數(shù)的數(shù)字之后加字母F或f,表示此數(shù)為單精度浮點(diǎn)數(shù)。如果加字母L或l,表示此數(shù)為長(zhǎng)雙精度數(shù)(long double)。
2.2.3 字符常量
字符常量是用單引號(hào)括起來(lái)的一個(gè)字符,例如,'a'和'?'都是合法字符常量。在對(duì)代碼編譯時(shí),編譯器會(huì)根據(jù)ASCII碼表將字符常量轉(zhuǎn)換成整型常量。字符'a'的ASCII碼值是97,字符'A'的ASCII碼值是65,字符'?'的ASCII碼值是63。ASCII碼表中還有很多通過(guò)鍵盤(pán)無(wú)法輸入的字符。可以使用'\ddd'或'\xhh'來(lái)引用所有ASCII碼表中的字符。\ddd是1~3位八進(jìn)制數(shù)所代表的字符,\xhh是1~2位十六進(jìn)制數(shù)所代表的字符。例如,'\101'表示ASCII碼A,\xOA表示換行等。
轉(zhuǎn)義字符的應(yīng)用示例如下:

示例運(yùn)行結(jié)果如圖2.2所示。

圖2.2 示例運(yùn)行結(jié)果
轉(zhuǎn)義字符是特殊的字符常量,使用時(shí)以字符“\”代表開(kāi)始轉(zhuǎn)義,后面不同的字符表示轉(zhuǎn)義后的字符。轉(zhuǎn)義字符說(shuō)明如表2.1所示。
表2.1 轉(zhuǎn)義字符說(shuō)明

2.2.4 字符串常量
字符串常量是由一對(duì)雙引號(hào)括起來(lái)的零個(gè)或多個(gè)字符序列,例如"welcome to our school" "hello girl"。" "表示一個(gè)空字符串。
同樣,' '也表示空字符,而NULL是一種特殊的數(shù)據(jù)類型,表示空的意思。有的編譯器把它編譯成零,有的則編譯成其他值。
字符串常量實(shí)際上是一個(gè)字符數(shù)組,可以將字符串分解成若干個(gè)字符,字符的數(shù)量是字符串的長(zhǎng)度。字符串常量一般都是用來(lái)給字符數(shù)組變量賦值或是直接作為實(shí)參傳遞,為告知編譯器字符串已經(jīng)結(jié)束,一般在給字符數(shù)組賦初值時(shí)在字符串的末尾加上字符'\0',表示字符結(jié)束,如果不加字符結(jié)束標(biāo)志,可能會(huì)出現(xiàn)意想不到的錯(cuò)誤。
字符常量'A'與字符串常量"A"是不同的,字符串常量"A"是由'A'和'\0'兩個(gè)字符組成的,字符串的長(zhǎng)度是2;字符常量'A'只是一個(gè)字符,沒(méi)有長(zhǎng)度。
2.2.5 其他常量
前面講到的都是普通的常量,常量還包括布爾(bool)常量、枚舉常量和宏定義常量等。
布爾常量:只有兩個(gè),一個(gè)是true,表示真;一個(gè)是false,表示假。
枚舉常量:枚舉型數(shù)據(jù)中定義的數(shù)據(jù)也都是常量。
宏定義常量:通過(guò)#define宏定義的一些值也是常量,例如:
#define PI 3.1415
其中PI就是常量。
- C++面向?qū)ο蟪绦蛟O(shè)計(jì)(第三版)
- 深度實(shí)踐OpenStack:基于Python的OpenStack組件開(kāi)發(fā)
- Oracle 12c中文版數(shù)據(jù)庫(kù)管理、應(yīng)用與開(kāi)發(fā)實(shí)踐教程 (清華電腦學(xué)堂)
- C#程序設(shè)計(jì)(慕課版)
- RTC程序設(shè)計(jì):實(shí)時(shí)音視頻權(quán)威指南
- Apache Karaf Cookbook
- CKA/CKAD應(yīng)試教程:從Docker到Kubernetes完全攻略
- Troubleshooting PostgreSQL
- C++ 從入門(mén)到項(xiàng)目實(shí)踐(超值版)
- Learning Apache Mahout Classification
- Visual FoxPro程序設(shè)計(jì)
- SQL經(jīng)典實(shí)例(第2版)
- Procedural Content Generation for C++ Game Development
- Clojure Polymorphism
- 快樂(lè)編程:青少年思維訓(xùn)練