C/C++中的轉義字符


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

1、一般轉義字符

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

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

其中,轉義字符'\\'代表的反斜杠"\"、轉義字符’\’’代表的字符"'"和轉義字符'\"'代表的字符"""。

Q:其本身就是可顯示字符,為什么還要對它轉義呢?

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

2、八進制轉義字符

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

例如,'\60'、'\101'、'\141'分別表示字符'0'、'A'和'a'。因為字符'0'、'A'和'a'的ASCII碼的八進制值分別為60、101和141。

(2)字符集中的所有字符都可以用八進制轉義字符表示,可以在八進制數字前面加上一個0來表示八進制轉義字符。

3、十六進制轉義字符

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

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

(2)可見,字符集中的所有字符都可以用十六進制轉義字符表示,可以在十六進制數字前面加上0x來表示十六進制轉義字符。

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

但由於不同的計算機系統上采用的字符集可能不同,因此,為了能使所編寫的程序可以方便地移植到其他的計算機系統上運行,程序中應少用這種形式的轉義字符。

4、轉義字符的使用

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。

5、注意事項

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

(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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM