"\\0211\\"xab" 的長度答案:10
逐字符拆解(每個轉義序列算 1 個字符,結尾隱含 \0):
字符序列: \ 0 2 1 1 " x a b \0 轉義含義: \ '0' '2' '1' '1' '"' 'x' 'a' 'b' 結束符 索引: 0 1 2 3 4 5 6 7 8 9
\\ → 反斜杠 \0211 → 四個普通字符 0211\" → 雙引號 "xab → 三個普通字符\0 作為字符串結束標記共 10 個字符(含結束符)。
char *s = "\\"Name\\Address\\n" 的長度理論長度:15(但代碼有語法錯誤)
問題分析:源代碼中 \\" 被編譯器解析為 \ + 字符串結束符 ",導致後續字符成為語法錯誤。修正寫法應為:
char *s = "\\\\\"Name\\\\Address\\n"; // 或使用原始字符串 C11: u8R"(\\"Name\\Address\n)"
按理論字面量統計(假設意圖為字面量 "\Name\Address\n"):
字符: " \ N a m e \ A d d r e s s \n \0 索引: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
共 15 個字符(含結束符 \0)。
int a=3; a += a -= a * a; 後 a 的值答案:-12
運算順序解析(複合賦值右結合,從右向左求值):
a * a → 3 * 3 = 9a -= 9 → a = 3 - 9 = -6(此時 a 更新為 -6)a += (-6) → a = -6 + (-6) = -12(右邊 a -= ... 的結果是賦值後的 a 值 -6)等價展開:a = a + (a = a - a * a) → a = 3 + (-6) = -12。