C/C++中的轉義字符

在C語言中有三種轉義字符,它們是:通常轉義字符、八進制轉義字符和十六進制轉義字符。編程

一、通常轉義字符

這種轉義字符,雖然在形式上由兩個字符組成,但只表明一個字符。經常使用的通常轉義字符爲:spa

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

其中,轉義字符'\\'表明的反斜槓"\"、轉義字符’\’’表明的字符"'"和轉義字符'\"'表明的字符"""。code

Q:其自己就是可顯示字符,爲何還要對它轉義呢?字符串

A:由於它們的原有的字符形式已做它用,其中,單引號用做區分字符常量的括號,雙引號用做區分字符串(下面將要介紹字符串)的括號,而反斜槓自己已用來表示轉義字符的開頭,所以必須對它們用轉義字符從新聲明。class

二、八進制轉義字符

(1)它是由反斜槓'\'和隨後的1~3個八進制數字構成的字符序列。程序

例如,'\60'、'\101'、'\141'分別表示字符'0'、'A'和'a'。由於字符'0'、'A'和'a'的ASCII碼的八進制值分別爲60、101和141。計算機

(2)字符集中的全部字符均可以用八進制轉義字符表示,能夠在八進制數字前面加上一個0來表示八進制轉義字符語言

三、十六進制轉義字符

(1)它是由反斜槓'\'和字母x(或X)及隨後的1~2個十六進制數字構成的字符序列。字符集

例如,'\x30'、'\x41'、'\X61'分別表示字符'0'、'A'和'a'。由於字符'0'、'A'和'a'的ASCII碼的十六進制值分別爲0x30、0x41和0x61。co

(2)可見,字符集中的全部字符均可以用十六進制轉義字符表示,能夠在十六進制數字前面加上0x來表示十六進制轉義字符。

(3)由上可知,使用八進制轉義字符和十六進制轉義字符,不只能夠表示控制字符,並且也能夠表示可顯示字符。

但因爲不一樣的計算機系統上採用的字符集可能不一樣,所以,爲了能使所編寫的程序能夠方便地移植到其餘的計算機系統上運行,程序中應少用這種形式的轉義字符。

四、轉義字符的使用

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);
}

調用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,這裏\026表示一個八進制字符
「\0mn」      //長度爲0,注意這裏不是2,
            //\0"是字符串的結尾,這個字符串其實只有"\0",後面的mn不是字符串的內容,這其實就是個空字符串,只有"\0"佔了一個字節的位置,因此長度爲1
相關文章
相關標籤/搜索