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程式中,使用不可列印字元時,通常用逸出字元表示。