2.2 常量及其類型
常量是指在程序運行過程中,其值保持不變的量。常量也分各種類型。
1. 整數
整數在計算機中是准確表示的,C語言中的整數可以用十進制、八進制和十六進制表示。
(1) 八進制整數是以數字0開頭,八進制整數一般不使用負數。
(2) 十六進制整數是以數字0和字母x(大小寫均可)打頭。例如,0x2f是一個十六進制,相當於十進制的47。十六進制整數也不使用負數。
在整數后面加上后綴u或U表示無符號整數,如70000u,0123u,0x567abU等。
在整數后面加上后綴l或L表示長整數,如-124783648l,1234567890L等。
在整數后面加上后綴ul或UL表示無符號長整數,如3456ul,1234567890ul等。
2. 實數
實數是在計算機中近似表示的。實數只能用十進制表示而不能用其它進制表示,有兩種書寫格式。
(1)小數格式。由正負號、整數部分、十進制小數點和小數部分表示。為了計算機正確識別實數,書寫小數點是必不可少的。如: .543、-25、0. 、.0 、0.0;
(2)指數格式。在小數格式基礎上,后面再加上一個e或E后跟一個1~3位整數部分。如: -1.234E8、2.74e-02、2.71828e0、.86e-3、1e-2等。
3. 字符常量
字符常量是指僅含單個ASCII字符的常量。有兩種表示方法。
(1)單引號表示法。對可顯示字符,直接用單引號將該字符括住。
(2)轉義字符表示法。對不可顯示字符,主要指那些控制字符如換行符、回車符、制表符等,還有一些在C語言中有特殊含義和用途的字符如單引號、雙引號、反斜杠等,只能用轉義字符表示。
轉義字符既可以由反斜杠開頭后跟某個特定字母的形式表示(如 ’\n’ , ’\t’ )也可以用反斜杠開頭,后跟1~3位八進制數(此時,八進制前不可以加0)或1~2位十六進制數(此時,十六進制數前面必須冠以小寫字母x,x前面也不能帶數字0)來表示(如 ‘\012’ , ‘\xa’等),這些八進制或十六進制數表示對應字符的ASCII代碼。
當然,可顯示字符也可以用轉義字符表示。例如,’A’,’\101’,’\x41’都代表字母A。
轉義字符 |
含義 |
十進制ASCII代碼值 |
說明 |
\0 |
NULL |
0 |
ASCII代碼值為0 |
\a |
BELL |
7 |
報警鈴響 |
\b |
BS |
8 |
退格符(backspace) |
\f |
FF |
12 |
換頁符 |
\n |
NL(LF) |
10 |
換行符 |
\r |
CR |
13 |
回車符 |
\t |
HT |
9 |
水平制表符(Tab) |
\v |
VT |
11 |
垂直制表符 |
\\ |
\ |
92 |
反斜杠 |
\’ |
‘ |
44 |
單引號 |
\” |
“ |
34 |
雙引號 |
C語言對字符型和整型是不加區分的,字符常量被忽視為1字節的整數,可以像整數一樣參加數值運算,其值就是該字符的ASCII碼。
4. 字符串常量
字符串常量是用雙引號括起來的0個或多個字符的序列。
(1) 字符串常量的存儲方式。按字符串中字符從左到右的順序依次占用連續的存儲單元,每個字符占一個字節,存放其對應的ASCII碼。C編譯系統會在每個字符串常量的末尾追加一個零字符NULL( ‘\0’ )作為字符串的結束標識符。所以,一個含有n個字符的字符串常量要占用n+1個字節的存儲空間。但零字符NULL打印時不顯示。
(2) 字符串常量和字符常量的區別。
每個字符常量只占用一個字節的存儲空間,而字符串常量則要占用一批連續的存儲單元,其所占字節數為字符串長度加1.
字符型常量可以存放在字符串常量中,而字符串常量則必須放在字符串數組中。
字符型常量可以和整數混合運算,而字符串常量不可以。