1. 程式人生 > >C/C++中的轉義字元 (普通轉義字元、八進位制轉移字元及十六進位制轉義字元)

C/C++中的轉義字元 (普通轉義字元、八進位制轉移字元及十六進位制轉義字元)

從表中可以看出,在C語言中有三種轉義字元,它們是:一般轉義字元、八進位制轉義字元和十六進位制轉義字元。

1. 一般轉義字元

這種轉義字元,雖然在形式上由兩個字元組成,但只代表一個字元。常用的一般轉義字元為:

\a  \n  \t  \v  \b  \r  \f  \\  \’  \"

細心的讀者可能已經發現,轉義字元'\\'代表的反斜槓"\"、轉義字元’\’’代表的字元"'"和轉義字元'\"'代表的字元""",其本身就是可顯示字元,為什麼還要對它轉義呢?

這是因為它們的原有的字元形式已作它用,其中,單引號用作區分字元常量的括號,雙引號用作區分字串(下面將要介紹字串)的括號,而反斜槓本身已用來表示轉義字元的開頭,因此必須對它們用轉義字元重新宣告。

2. 八進位制轉義字元(被看作是一個八進位制整數,且是有符號整數(-128~127)(補碼儲存)!!若超過8位如\601('\201'列印整數為-127),要麼發生截斷要麼編譯錯誤!!跟編譯器有關)

它是由反斜槓'\'和隨後的1~3個八進位制數字構成的字元序列。例如,'\60'、'\101'、'\141'分別表示字元'0'、'A'和'a'。因為字元'0'、'A'和'a'的ASCII碼的八進位制值分別為60、101和141。

字符集中的所有字元都可以用八進位制轉義字元表示。

如果你願意,可以在八進位制數字前面加上一個0來表示八進位制轉移字元。

3. 十六進位制轉義字元

它是由反斜槓'\'和字母x(或X)及隨後的1~2個十六進位制數字構成的字元序列。例如,'\x30'、'\x41'、'\X61'分別表示字元'0'、'A'和'a'。因為字元'0'、'A'和'a'的ASCII碼的十六進位制值分別為0x30、0x41和0x61。

可見,字符集中的所有字元都可以用十六進位制轉義字元表示。

由上可知,使用八進位制轉義字元和十六進位制轉義字元,不僅可以表示控制字元,而且也可以表示可顯示字元。但由於不同的計算機系統上採用的字符集可能不同,因此,為了能使所編寫的程式可以方便地移植到其他的計算機系統上執行,程式中應少用這種形式的轉義字元。

轉義字元的使用

例:

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,6,7

呼叫printf顯示程式執行結果:

5

67

56     7

程式在第一列輸出a值5之後就是“\n”,故回車換行;接著又是“\t”,於是跳到下一製表位置(設製表位置間隔為8),再輸出b值6和c 值7;後又是"\n",因此再回車換行;之後又輸出a值5和b值6;再次後"\t"跳到下一製表位置(與上一行的6 對齊),但下一轉義字元“\b”又使退回一格,故緊挨著6再輸出c值7。

使用轉義字元時需要注意以下問題:

1)轉義字元中只能使用小寫字母,每個轉義字元只能看作一個字元。

2)\v垂直製表和\f換頁符對螢幕沒有任何影響,但會影響印表機執行響應操作。

3)在C程式中,使用不可列印字元時,通常用轉義字元表示。

4)轉義字元’\0’表示空字元NULL,它的值是0。而字元'0'的ASCII碼值是48。因此,空字元’\0’不是字元0。另外,空字元不等於空格字元,空格字元的ASCII碼值為32而不是0。程式設計序時,讀者應當區別清楚。

5) 如果反斜線之後的字元和它不構成轉義字元,則’\’不起轉義作用將被忽略。

例如:

printf(“a\Nbc\nDEF\n”);

輸出:

aNbc

DEF

6)轉義字元也可以出現在字串中,但只作為一個字元看待。

例 求下面字串的長度

“\026[12,m” 長度為6

“\0mn”   長度為0。(想想:為什麼不是2)

轉自:http://blog.sina.com.cn/s/blog_686188ef0100ldb3.html