1. 程式人生 > >C語言中的轉義字元

C語言中的轉義字元

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

C語言中的轉義字元

簡介

 在字符集中,有一類字元具有這樣的特性:當從鍵盤上輸入這個字元時,顯示器上就可以顯示這個字元,即輸入什麼就顯示什麼。這類字元稱為可顯示字元,如a、b、c、$、+和空格符等都是可顯示字元。
 

另一類字元卻沒有這種特性。它們或者在鍵盤上找不到對應的一個鍵(當然可以用特殊方式輸入),或者當按鍵以後不能顯示鍵面上的字元。其實,這類字元是為控制作用而設計的,故稱為控制字元
 在C語言中,構成字元常量的控制字元必須用轉義字元表示。轉義字元是一種以“\”開頭的字元。例如退格符用'\b'表示,換行符用'\n'表示。轉義字元中的'\'表示它後面的字元已失去它原來的含義,轉變成另外的特定含義。反斜槓與其後面的字元一起構成一個特定的字元。
 轉義字元是C語言中表示字元的一種特殊形式。轉義字元以反斜'\'開頭,後面跟一個字元或一個八進位制或十六進位制數表示。轉義字元具有特定的含義,不同於字元原有的意義,故稱轉義字元。
 
通常使用轉義字元表示ASCII碼字符集中不可列印的控制字元和特定功能的字元,如用於表示字元常量的單撇號('),用於表示字串常量的雙撇號(")和反斜槓(\)等。例如,printf函式的格式串中用到的'\n'就是一個轉義字元,其意義是“回車換行”。轉義字元主要用來表示那些用一般字元不便於表示的控制程式碼。下表是常用的轉義字元及其含義:

轉義字元 意義 ASCII碼值(十進位制)
\a 響鈴(BEL) 007
\b 退格(BS) ,將當前位置移到前一列
008
\f 換頁(FF),將當前位置移到下頁開頭 012
\n 換行(LF) ,將當前位置移到下一行開頭 010
\r 回車(CR) ,將當前位置移到本行開頭 013
\t 水平製表(HT) (跳到下一個TAB位置) 009
\v 垂直製表(VT) 011
\\ 代表一個反斜線字元''\' 092
\' 代表一個單引號(撇號)字元 039
\" 代表一個雙引號字元 034
\0 空字元(NULL) 000
\ddd 1到3位八進位制數所代表的任意字元 三位八進位制
\xhh 1到2位十六進位制所代表的任意字元 二位十六進位制

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

一般轉義字元

 這種轉義字元,雖然在形式上由兩個字元組成,但只代表一個字元。常用的一般轉義字元為:
\a  \n  \t  \v  \b  \r  \f  \\ \\"
細心的讀者可能已經發現,轉義字元'\/'代表的反斜槓"/"、轉義字元’\’’代表的字元"'"和轉義字元'\"'代表的字元""",其本身就是可顯示字元,為什麼還要對它轉義呢? 這是因為它們的原有的字元形式已作它用,其中單引號用作區分字元常量的括號,雙引號用作區分字串(下面將要介紹字串)的括號,而反斜槓本身已用來表示轉義字元的開頭,因此必須對它們用轉義字元重新宣告。

八進位制轉義字元

 它是由反斜槓'/'和隨後的1~3個八進位制數字構成的字元序列。例如,'\60'、'\101'、'\141'分別表示字元'0'、'A'和'a'。因為字元'0'、'A'和'a'的ASCII碼的八進位制值分別為60、101和141。字符集中的所有字元都可以用八進位制轉義字元表示。如果你願意,可以在八進位制數字前面加上一個0來表示八進位制轉移字元。

十六進位制轉義字元

 它是由反斜槓'/'和字母x(或X)及隨後的1~2個十六進位制數字構成的字元序列。例如,'\x30'、'\x41'、'\X61'分別表示字元'0'、'A'和'a'。因為字元'0'、'A'和'a'的ASCII碼的十六進位制值分別為0x30、0x41和0x61。 可見,字符集中的所有字元都可以用十六進位制轉義字元表示。
 由上可知,使用八進位制轉義字元和十六進位制轉義字元,不僅可以表示控制字元,而且也可以表示可顯示字元。但由於不同的計算機系統上採用的字符集可能不同,因此,為了能使所編寫的程式可以方便地移植到其他的計算機系統上執行,程式中應少用這種形式的轉義字元。

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

  • 1)轉義字元中只能使用小寫字母,每個轉義字元只能看作一個字元。
  • 2)\v垂直製表和\f換頁符對螢幕沒有任何影響,但會影響印表機執行響應操作。
  • 3)在C程式中,使用不可列印字元時,通常用轉義字元表示。
  • 4)轉義字元’\0’表示空字元NULL,它的值是0。而字元'0'的ASCII碼值是48。因此,空字元’\0’不是字元0。另外,空字元不等於空格字元,空格字元的ASCII碼值為32而不是0。程式設計序時,讀者應當區別清楚。
  • 5) 如果反斜線之後的字元和它不構成轉義字元,則’\’不起轉義作用將被忽略。
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述