任何人都可以請解釋字符常量\ 000和\ xhh的用法,即八進制數字和十六進制數字中的字符常量嗎?字符常量: 000 xhh
6
A
回答
2
在C中,字符串由一個字符結束零值(0)。這可能是這樣寫的:
char zero = 0;
但這在字符串內不起作用。在字符串文字中使用了一種特殊的語法,其中反斜槓作爲轉義序列的引入,並且後面跟着各種各樣的東西。
一個這樣的序列是「反斜槓零」,它只是一個值爲零的字符。因此,你可以這樣寫:
char hard[] = "this\0has embedded\0zero\0characters";
另一個序列使用反斜槓後跟字母'x'
和一個或兩個十六進制數字,表示與指定的代碼的字符。使用這種語法,您可以將零字節寫爲'\x0'
。
編輯:重新閱讀這個問題,也支持這樣的基數爲八的常量,即八進制。他們使用一個反斜槓後跟數字零,就像八進制文字整數常量一樣。 '\00'
因此是'\0'
的同義詞。
當您需要構造一個包含非打印字符或特殊控制字符的字符串時,這有時很有用。
還有一組單字符的「已命名」特殊字符,例如換行符爲'\n'
,換行符爲'\t'
,依此類推。
2
八路是基座8(使用數字0-7),所以每一個數字是3個比特:
\ 0354 = 11 101 100
十六進制是基座16(使用數字0-9,AF)和每個數字是4位:
\ X23 = 0010 0011
裏面C字符串(字符數組/指針),它們通常被用於編碼不能容易地表示字節。
所以,如果你想它使用像STX和ETX的ASCII碼字符串,你可以這樣做:
char *msg = "\x02Here's my message\x03";
4
這些將被用於在編輯器中寫入否則不可打印的字符。對於標準字符,這將是各種控制字符,對於wchar,它可能是未在編輯器字體中表示的字符。
例如,這個編譯在Visual Studio 2005:
const wchar_t bom = L'\xfffe'; /* Unicode byte-order marker */
const wchar_t hamza = L'\x0621'; /* Arabic Letter Hamza */
const char start_of_text = '\002'; /* Start-of-text */
const char end_of_text = '\003'; /* End-of-text */
編輯:用八進制字符文字有一個有趣的警告。八進制數字通常不會超過三位數字,這會人爲地限制我們可以輸入的字符。
例如:
/* Letter schwa; capital unicode code point 0x018f (octal 0617)
* small unicode code point 0x0259 (octal 1131)
*/
const wchar_t Schwa2 = L'\x18f'; /* capital letter Schwa, correct */
const wchar_t Schwa1 = L'\617'; /* capital letter Schwa, correct */
const wchar_t schwa1 = L'\x259'; /* small letter schwa, correct */
const wchar_t schwa2 = L'\1131'; /* letter K (octal 113), incorrect */
相關問題
- 1. 的Python:\ XHH轉換爲字符
- 2. 1 000 000 000 000 000 000個Fibonacci數
- 3. 如何用新的GUID替換子字符串000-000
- 4. 排序50 000 000個數字
- 5. 字符串常量
- 6. C++字符常量符號
- 7. 如何在Perl中對字符串中的\ xhh字符進行「解碼」unicode-escape'「?
- 8. 檢查字符是否寫在\ xHH表示法
- 9. C中的字符串常量與常量字符*
- 10. 轉換常量字符**爲常量字符*
- 11. 獲取字符串的多個'/ 000'字符的大小
- 12. 將\ 000添加到密碼字符串中的每個字符
- 13. 如何實現C++手機號碼格式:(000)-000-000?
- 14. 將常量字符與字符串結合到另一個常量字符
- 15. 排序OrderedEnumerableRowCollection ..喜歡00-000字符串,01-000不排序預期
- 16. 多字符字符常量[-Werror,-Wmultichar]
- 17. 警告:多字符字符常量[-Wmultichar] |
- 18. 是一個常量字符指針,指向一個常量字符或指向字符的常量指針嗎?
- 19. 曖昧呼叫用參數(常量T&,常量T&)或(常量字符(&)[N],常量字符(&)[M])
- 20. 美國電話號碼(000)-000-0000或000-000-0000的MVC驗證
- 21. 聲明字符串常量
- 22. Python字符串常量
- 23. 多字符常量警告
- 24. 使用字符串常量
- 25. 稔:字符串常量
- 26. 無效字符常量JSON
- 27. 字符串常量存儲
- 28. '\' - 字符常量無效?
- 29. 無效字符常量
- 30. 重構常量字符串
如果你想寫 「這\ 0has \ 00字符」? \ 00會被解釋爲一個字節'\ 0'還是'\ 0','0'?八進制轉義序列長度的限制是多少? – strager 2009-04-16 11:54:55