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程序中,使用不可打印字符時,通常用轉義字符表示。