今天改代碼的時候發現一個逸出字元'/012',莫名的很。上網搜了一下:
逸出字元是C語言中表示字元的一種特殊形式。通常使用逸出字元表示ASCII碼字元集中不可列印的控制字元和特定功能的字元,如用於表示字元常量的單撇號( '),用於表示字串常量的雙撇號( ")和反斜線( /)等。逸出字元用反斜線/後面跟一個字元或一個八進位或十六進位數表示。
逸出字元 意義 ASCII碼值(十進位)
/a 響鈴(BEL) 007
/b 退格(BS) 008
/f 換頁(FF) 012
/n 換行(LF) 010
/r 斷行符號(CR) 013
/t 水平製表(HT) 009
/v 垂直製表(VT) 011
// 反斜線 092
/? 問號字元 063
/' 單引號字元 039
/" 雙引號字元 034
/0 Null 字元(NULL) 000
/ddd 任一字元 三位八進位
/xhh 任一字元 二位十六進位
字元常量中使用單引號和反斜線以及字元常量中使用雙引號和反斜線時,都必須使用逸出字元表示,即在這些字元前加上反斜線。
在C程式中使用逸出字元/ d d d或者/ x h h可以方便靈活地表示任一字元。/ d d d為斜杠後面跟三位八位元,該三位八位元的值即為對應的八進位A S C I I碼值。/ x後面跟兩位十六進位數,該兩位十六進位數為對應字元的十六進位A S C I I碼值。
使用逸出字元時需要注意以下問題:
1) 逸出字元中只能使用小寫字母,每個逸出字元只能看作一個字元。
2) /v 垂直製表和/f 換頁符對螢幕沒有任何影響,但會影響印表機執行響應操作。
3) 在C程式中,使用不可列印字元時,通常用逸出字元表示
註:
1,/v垂直製表和/f換頁符對螢幕沒有任何影響,但會影響印表機執行響應操作。
2,/n其實應該叫斷行符號換行。換行只是換一行,不改變游標的橫座標;斷行符號只是回到行首,不改變游標的縱座標。
3,/t 游標向前移動四格或八格,可以在編譯器裡設定
4,/' 在字元裡(即單引號裡)使用。在字串裡(即雙引號裡)不需要,只要用 ' 即可。
5,/? 其實不必要。只要用 ? 就可以了(在windows VC6 和tc2 中驗證)
逸出字元是一種特殊的字元常量。逸出字元以反斜線"/"開頭,後跟一個或幾個字元。逸出字元具有特定的含義,不同於字元原有的意義,故稱“轉義”字元。例如,在前面各例題printf函數的格式串中用到的“/n”就是一個逸出字元,其意義是“斷行符號換行”。逸出字元主要用來表示那些用一般字元不便於表示的控制碼。
常用的逸出字元及其含義
逸出字元 逸出字元的意義
廣義地講,C語言字元集中的任何一個字元均可用逸出字元來表示。表2.2中的/ddd和/xhh正是為此而提出的。ddd和hh分別為八進位和十六進位的ASCII代碼。如/101表示字?quot;A" ,/102表示字母"B",/134表示反斜線,/XOA表示換行等。逸出字元的使用
void main()
{
int a,b,c;
a=5; b=6; c=7;
printf("%d/n/t%d %d/n %d %d/t/b%d/n",a,b,c,a,b,c);
}
此程式練習逸出字元的使用
a、b、c為整數 5->a,6->b,7->c
調用printf顯示程式運行結果
printf("%d/n/t%d %d/n %d %d/t/b%d/n",a,b,c,a,b,c);
程式在第一列輸出a值5之後就是“/n”,故斷行符號換行;接著又是“/t”,於是跳到下一製表位置(設製表位置間隔為8),再輸出b值6;空二格再輸出c 值7後又是"/n",因此再斷行符號換行;再空二格之後又輸出a值5;再空三格又輸出b的值6;再次後"/t"跳到下一製表位置(與上一行的6 對齊),但下一逸出字元“/b”又使退回一格,故緊挨著6再輸出c值7。