首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言字符串長度計算、指針字符串與複合賦值運算詳解

     編輯:C 語言問答

題目 1:字符串 "\\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 個字符(含結束符)。

題目 2:指針字符串 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)。

題目 3:int a=3; a += a -= a * a; 後 a 的值

答案:-12

運算順序解析(複合賦值右結合,從右向左求值):

  1. a * a → 3 * 3 = 9
  2. a -= 9 → a = 3 - 9 = -6(此時 a 更新為 -6)
  3. a += (-6) → a = -6 + (-6) = -12(右邊 a -= ... 的結果是賦值後的 a 值 -6)

等價展開:a = a + (a = a - a * a) → a = 3 + (-6) = -12。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved