C++基础知识(三)—— 常量
一個(gè)常量(constant)是一個(gè)有固定值的表達(dá)式。
字(Literals)
字是用來(lái)在程序源碼中表達(dá)特定的值。在前面的內(nèi)容中我們已經(jīng)用了很多的字來(lái)給變量賦予特定的值。例如:
這句代碼中5就是一個(gè)字常量。
字常量(literal constant)可以被分為整數(shù)(Integer Numbers), 浮點(diǎn)數(shù)(Floating-Point Numbers),字符(Characters)和字符串(Strings)。
?
整數(shù)(Integer Numbers)
1776707
-273
他們是整型常數(shù),表示十進(jìn)制整數(shù)值。注意表示整型常數(shù)時(shí)我們不需要些引號(hào)(quotes ("))或任何特殊字符。毫無(wú)疑問(wèn)它是個(gè)常量:任何時(shí)候當(dāng)我們?cè)诔绦蛑袑?776,我們指的就是1776這個(gè)數(shù)值。
除十進(jìn)制整數(shù)另外, C++還允許使用八進(jìn)制(octal numbers)和十六進(jìn)制(hexadecimal numbers)的字常量(literal constants)。如果我們想要表示一個(gè)八進(jìn)制數(shù),我們必須在它前面加上一個(gè)0字符(zero character),而表示十六進(jìn)制數(shù)我們需要在它前面加字符0x (zero, x)。例如以下字常量(literal constants)互相等值:
75?????// 十進(jìn)制 decimal0113?// 八進(jìn)制 octal
0x4b?// 十六進(jìn)制 hexadecimal
所有這些都表示同一個(gè)整數(shù): 75 (seventy five) ,分別以十進(jìn)制數(shù),八進(jìn)制數(shù)和十六進(jìn)制數(shù)表示。
像變量一樣,常量也是有數(shù)據(jù)類型的。默認(rèn)的整數(shù)字常量的類型為int型。我們可以通過(guò)在后面加字母u或l來(lái)迫使它為無(wú)符號(hào)(unsigned)的類型或長(zhǎng)整型(long)。
75 // int 75u // unsigned int 75l // long 75ul // unsigned long ?這里后綴u和l可以是大寫,也可以是小寫。
浮點(diǎn)數(shù)(Floating Point Numbers)
浮點(diǎn)數(shù)以小數(shù)(decimals)和/或指數(shù)冪( exponents)的形式表示。它們可以包括一個(gè)小數(shù)點(diǎn),一個(gè)e字符(表示"by ten at the Xth height",這里X是后面跟的整數(shù)值) ,或兩者都包括。
3.14159?// 3.141596.02e23?// 6.02 x 10^1023
1.6e-19?// 1.6 x 10^-19
3.0?????// 3.0
以上是包含小數(shù)的以C++表示的4個(gè)有效數(shù)值。第一個(gè)是PI,第二個(gè)是Avogadro數(shù)之一,第三個(gè)是一個(gè)電子(electron)的電量(electric charge)(一個(gè)極小的數(shù)值) – 所有這些都是近似值。最后一個(gè)是浮點(diǎn)數(shù)字常量表示數(shù)3。
浮點(diǎn)數(shù)的默認(rèn)數(shù)據(jù)類型為double。如果你想使用float或long double類型,可以在后面加f或l后綴,同樣大小寫都可以:
3.14159L // long double 6.02e23f // float
字符和字符串(Characters and strings)
此外還有非數(shù)字常量,例如:
'z''p'
"Hello world"
"How do you do?"?
前兩個(gè)表達(dá)式表示單獨(dú)的字符(character),后面兩個(gè)表示由若干字符組成的字符串(string) 。注意在表示單獨(dú)字符的時(shí)候,我們用單引號(hào)(single quotes (')),在表示字符串或多于一個(gè)字符的時(shí)候我們用雙引號(hào)(double quotes ("))。
當(dāng)以常量方式表示單個(gè)字符和字符串時(shí),必須寫上引號(hào)以便把他們和可能的變量標(biāo)識(shí)或保留字區(qū)分開(kāi),注意以下例子:
x'x'
x 指一個(gè)變量名稱為 x, 而'x'指字符常量'x'。
字符常量和字符串常量各有特點(diǎn),例如escape codes,這些是除此之外無(wú)法在源程序中表示的特殊的字符,例如換行符 newline (\n) 或跳躍符tab (\t)。所有這些符號(hào)前面要加一個(gè)反斜杠inverted slash (\)。這里列出了這些escape codes:
| \n | 換行符newline |
| \r | 回車carriage return |
| \t | 跳躍符tabulation |
| \v | 垂直跳躍vertical tabulation |
| \b | backspace |
| \f | page feed |
| \a | 警告alert (beep) |
| \' | 單引號(hào)single quotes (') |
| \" | 雙引號(hào)double quotes (") |
| \? | 問(wèn)號(hào)question (?) |
| \\ | 反斜杠inverted slash (\) |
例如:
'\n''\t'?
"Left \t Right"?
"one\ntwo\nthree"?
另外你可以數(shù)字ASCII 碼表示一個(gè)字符,這種表示方式是在反斜杠(\)之后加以8進(jìn)制數(shù)或十六進(jìn)制數(shù)表示的ASCII 碼。在第一種(八進(jìn)制octal)表示中,數(shù)字必需緊跟反斜杠(例如\23或\40),第二種(十六進(jìn)制hexacedimal),必須在數(shù)字之前寫一個(gè)x字符(例如\x20或\x4A)。
如果每一行代碼以反斜杠inverted slash (\)結(jié)束,字符串常量可以分多行代碼表示:
"string expressed in \two lines"
你還可以將多個(gè)被空格blankspace、跳躍符tabulator、換行符newline或其他有效空白符號(hào)分隔開(kāi)的字符串常量連接在一起:
"we form" "a single" "string" "of characters" 最后如果我們想讓字符串使用寬字符(wchar_t),而不是窄字符(char),可以在常量的前面加前綴L:
寬字符通常用來(lái)存儲(chǔ)非英語(yǔ)字符,比如中文字符,一個(gè)字符占兩個(gè)字節(jié)。
布爾型常量(Boolean Literals)
布爾型只有兩個(gè)有效的值:true和false,其數(shù)據(jù)類型為bool。
定義常量Defined constants (#define)
使用預(yù)處理器指令#define,你可以將那些你經(jīng)常使用的常量定義為你自己取的名字而不需要借助于變量。它的格式是:
#define identifier value
例如:
#define PI 3.14159265#define NEWLINE '\n'
#define WIDTH 100
以上定義了三個(gè)常量。一旦做了這些聲明,你可以在后面的程序中使用這些常量,就像使用其它任何常量一樣,例如:
circle = 2 * PI * r;cout << NEWLINE;
實(shí)際上編譯器在遇到#define指令的時(shí)候做的只是把任何出現(xiàn)這些 常量名(在前面的例子中為PI, NEWLINE或WIDTH)的地方替換成他們被定義為的代碼(分別為3.14159265, '\n'和100)。因此,由#define定義的常量被稱為宏常量macro constants。
#define 指令不是代碼語(yǔ)句,它是預(yù)處理器指令,因此指令行末尾不需要加分號(hào)semicolon (;) 。如果你在宏定義行末尾加了分號(hào)(;) ,當(dāng)預(yù)處理器在程序中做常量替換的時(shí)候,分號(hào)也會(huì)被加到被替換的行中,這樣可能導(dǎo)致錯(cuò)誤。
聲明常量declared constants (const)
通過(guò)使用const前綴,你可以定義指定類型的常量,就像定義一個(gè)變量一樣:
const int width = 100;const char tab = '\t';
const zip = 12440;
如果沒(méi)有指定類型(如上面最后例子中最后一行),編譯器會(huì)假設(shè)常量為整型int。
總結(jié)
以上是生活随笔為你收集整理的C++基础知识(三)—— 常量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 职业技能培训
- 下一篇: C++基础知识(二)—— 变量和数据类型