日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++混淆点-转义字符

發布時間:2025/3/15 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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。

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

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

?

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

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為一個字符 再加5個字符

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

cout << strlen("\0mn") << endl; //0 //\0被認為是字符串結束標志,所以為0 cout << strlen("\026[12,m") << endl; //\026中026是八進制寫法 cout << sizeof("\0mn") << endl; //4 \0代表0 cout << sizeof("\026[12,m") << endl; //7

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

總結

以上是生活随笔為你收集整理的C/C++混淆点-转义字符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。