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

C 語言運算符優先級與結合性:X = 1 + 2 * 5 - 8 + 6 / 7 * 4 正確括號化解析

     編輯:程式設計疑難解答

原表達式

X = 1 + 2 * 5 - 8 + 6 / 7 * 4

運算符優先級規則(高→低)

  1. *、/、%(同級,左結合)
  2. +、-(同級,左結合)
  3. =(右結合)

逐步括號化過程

1 + 2 * 5 - 8 + 6 / 7 * 4
→ 1 + (2 * 5) - 8 + (6 / 7) * 4     // 先算 * 和 /
→ 1 + 10 - 8 + 0 * 4                // 6/7 整除 = 0
→ 1 + 10 - 8 + 0                    // 0*4 = 0
→ (1 + 10) - 8 + 0                  // 左結合:先算左邊 +
→ 11 - 8 + 0
→ (11 - 8) + 0                      // 左結合:先算左邊 -
→ 3 + 0
→ 3

正確選項對應

選項 B: 1 + (2 * 5) - 8 + ((6 / 7) * 4)

  • 完全匹配優先級規則:*// 先於 +/-,同級左結合。
  • 不改變運算順序,僅用括號明確標註。

錯誤選項分析

選項錯誤原因
A: (1 + 2) * (5 - 8) + (6 / (7 * 4))強行綁定 + - 優先於 * /,違反優先級
C: (1 + 2) * (5 - ((8 + 6) / (7 * 4)))同 A,且結構完全錯位
D: 1 + (2 * (5 - 8)) + ((6 / 7) * 4)將 5-8 綁定到 2* 上,改變了原表達式結構

關鍵知識點:整數除法截斷

6 / 7 = 0  // 整數除法向零截斷,非 0.857...
// 若需浮點結果,至少一操作數為浮點:6.0 / 7 或 6 / 7.0

總結口訣

「先乘除後加減,同級從左往右;括號明確優先級,整除截斷記心頭。」

運算符優先級與結合性是編譯器解析表達式的鐵律,手寫括號化時嚴守「高優先級先結合、同級看結合方向」,即可無誤。

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