我通過這四個方面困惑:標準字符串文字和字符串文字?
字符串文字
字符常量
字符串文字。
多字節字符序列
而且讀這句話在C Standard:
字符串文字不一定是一個字符串(參見7.1.1),因爲 空字符可以通過
\0
轉義序列嵌入其中。
第一部分是什麼意思?
我通過這四個方面困惑:標準字符串文字和字符串文字?
字符串文字
字符常量
字符串文字。
多字節字符序列
而且讀這句話在C Standard:
字符串文字不一定是一個字符串(參見7.1.1),因爲 空字符可以通過
\0
轉義序列嵌入其中。
第一部分是什麼意思?
甲字串文本是
u8"abc"
;L"abc"
。從標準(重點煤礦):
甲字符串文字是封閉在 雙引號,作爲
"xyz"
零個或多個多字節字符的序列。 A UTF-8字符串文字是相同的,除了前綴爲u8。 A 寬字符串文字與相同,但以字母L
,u
或U
作爲前綴。
....
在翻譯階段7,字符或值爲零的代碼被附加到每個多字節 字符序列,該字符序列由一個或多個字符串文字產生。 78)78)字符串文字不必是一個字符串(見7.1.1),因爲一個空字符可以由 \ 0轉義序列被嵌入在它。
甲串是由封端的字符的連續序列和包括第一個空字符 。
所以一個字符串文字可能有\0
也在中間還是開頭,例如"a\0b"
或"\0ab"
。我認爲這是腳註說的。
甲字符常數是C-炭序列(通常是單個字符)在單引號,一個可能的前綴L
/u
/U
。
一個整數的字符常數的封閉 在單引號的一個或多個多字節字符的序列,如在
'x'
。寬字符常量是相同的,除了 字母L
,u
或U
的前綴。
所以術語不是很對稱,IMO。例如。寬字符常量是字符常量的特例。然而,字符串文字和寬字符串文字屬於字符串文字。
字符串文字==字符串文字 – DyZ
@DYZ不完全。該標準正在談論字符,UTF-8和寬字符串文字。不過,我認爲這個問題是關於字面與字符串。 – AlexD
根據定義,字符串由空字符終止。字符串文字可能在其中包含空字符。因此,字符串文字可能不是字符串。 –