2.5.1字符常量
字符常量是指用一對單引號括起來的一個字符。如‘a’,‘9’,‘!’。字符常量中的單引號只起定界作用並不表示字符本身。單引號中的字符不能是單引號(’)和反斜槓(\),它們特有的表示法在轉義字符中介紹。
在CC語言中,字符是按其所對應的ASCII碼值來存儲的,一個字符占一個字節。例如:字符ASCII碼值(十進制)!33048149957A65B66a97b98
注意字符'9'和數字9的區別,前者是字符常量,後者是整型常量,它們的含義和在計算機中的存儲方式都截然不同。
由於C語言中字符常量是按整數(short型)存儲的,所以字符常量可以像整數一樣在程序中參與相關的運算。例如:
'a'-32;/*執行結果97-32=65*/
'A'+32;/*執行結果65+32=97*/
'9'-9;/*執行結果57-9=48*/
2.5.2字符串常量
字符串常量是指用一對雙引號括起來的一串字符。雙引號只起定界作用,雙引號括起的字符串中不能是雙引號(")和反斜槓(\),它們特有的表示法在轉義字符中介紹。例如:"China","Cprogram","YES&NO","33312-2341","A" 等。C語言中,字符串常量在內存中存儲時,系統自動在字符串的末尾加一個“串結束標志”,即ASCII碼值為0的字符NULL,常用\0表示。因此在程序中,長度為n個字符的字符串常量,在內存中占有n+1個字節的存儲空間。例如,字符串China有5個字符,作為字符串常量"China"存儲於內存中時,共占6個字節,系統自動在後面加上NULL字符,其存儲形式為:
要特別注意字符串與字符串常量的區別,除了表示形式不同外,其存儲性質也不相同,字符'A'只占1個字節,而字符串常量"A"占2個字節。
2.5.3轉義字符
轉義字符是C語言中表示字符的一種特殊形式。通常使用轉義字符表示ASCII碼字符集中不可打印的控制字符和特定功能的字符,如用於表示字符常量的單撇號('),用於表示字符串常量的雙撇號(")和反斜槓(\)等。轉義字符用反斜槓\後面跟一個字符或一個八進制或十六進制數表示。表2-4給出了C語言中常用的轉義字符。
字符常量中使用單引號和反斜槓以及字符常量中使用雙引號和反斜槓時,都必須使用轉義字符表示,即在這些字符前加上反斜槓。
在C程序中使用轉義字符\ddd或者\xhh可以方便靈活地表示任意字符。\ddd為斜槓後面跟三位八進制數,該三位八進制數的值即為對應的八進制ASCII碼值。\x後面跟兩位十六進制數,該兩位十六進制數為對應字符的十六進制ASCII碼值。
使用轉義字符時需要注意以下問題:
1)轉義字符中只能使用小寫字母,每個轉義字符只能看作一個字符。
2)\v垂直制表和\f換頁符對屏幕沒有任何影響,但會影響打印機執行響應操作。
3)在C程序中,使用不可打印字符時,通常用轉義字符表示。
2.5.4 符號常量
C語言允許將程序中的常量定義為一個標識符,稱為符號常量。符號常量一般使用大寫英文字母表示,以區別於一般用小寫字母表示的變量。符號常量在使用前必須先定義,定義的形式是:
#define <符號常量名> <常量>
例如:
#define PI 3.1415926
#define TRUE 1
#definr FALSE 0
#define STAR '*'
這裡定義PI、TRUE、FLASE、STAR為符號常量,其值分別為3.1415926,1,0,'*'。
#define是C語言的預處理命令,它表示經定義的符號常量在程序運行前將由其對應的常量替換。
定義符號常量的目的是為了提高程序的可讀性,便於程序的調試和修改。因此在定義符號常量名時,應使其盡可能地表達它所代表的常量的含義,例如前面所定義的符號常量名PI(π),表示圓周率3.1415926。此外,若要對一個程序中多次使用的符號常量的值進行修改,只須對預處理命令中定義的常量值進行修改即可。
2.5.5字符變量
字符變量用來存放字符常量,注意只能存放一個字符,不要以為在一個字符變量中可以放字符串。字符變量的定義形式如下:
char c1,c2;
;
它表示c1和c2為字符變量,各放一個字符。因此可以用下面語句對c1、c2賦值:
c1='a';c2='b';
c1、c2被指定為字符變量。但在第3行中,將整數97和98分別賦給c1和c2,它的作用相當於以下兩個賦值語句:
c1='a';
c2='b';
因為'a'和'b'的ASCII碼為97和98。第4行將輸出兩個字符。"%c"是輸出字符的格式。程序輸出:
它的作用是將兩個小寫字母轉換為大寫字母。因為'a'的ASCII碼為97,而'A'為65,'b'為98,'B'為66。從ASCII代碼表中可以看到每一個小寫字母比大寫字母的ASCII碼大32。即'a'='A'+32。