當前位置:編程學習大全網 - 編程軟體 - 請教c語言等編程語言優先級的問題,對著這個優先級的表看得不是很明白,有的從左往右,有的從右往左

請教c語言等編程語言優先級的問題,對著這個優先級的表看得不是很明白,有的從左往右,有的從右往左

運算符涉及到優先級和結合性問題,”從左往右“和”從右往左“說的是運算符的結合性。優先級決定表達式中各種不同的運算符起作用的優先次序,而結合性則在相鄰的運算符的具有同等優先級時,決定表達式的結合方向。可以這樣理解:

首先,表達式中得有多個運算符,這樣就存在左右兩邊都有運算符的操作數:

1 如果這個操作數兩邊的運算符優先級不同,則這個操作數屬於優先級高的那個運算符,它優先參與優先級高的運算符表示的運算;

2 如果這個操作數兩邊的運算符優先級相同,則這個操作數屬於左右那個運算符,就要看著兩個運算符的結合性了(註意,相同優先級的運算符必然有相同的結合性,否則此處就出現bug了),如果運算符結合性是”從左到右“,則操作數屬於左側的運算符,就是說運算符是從左側開始處理的;如果結合性是”從右到左“,則操作數屬於右側的運算符,這兩個同優先級的運算符右側的先處理。

結合性舉例:

(1) a + b - c

b就是前面說的兩邊有兩個相同優先級的操作數,+ 和 - 的結合性是”從左到又“,所以 + 先處理,- 後處理。

(2) a = b = c

b兩邊有兩個相同優先級的運算符,= 結合性是”從右到左“,所以右側的 = 先處理,a = b = c 等價於 a = (b = c);同理,a = b += c 等價於 a = (b += c),因為 + 和 += 是相同優先級的。

(3) *p++

p左右的兩個運算符優先級相同,但都是”從右到左“結合性,所以這樣理解:*(p++)。

  • 上一篇:聯想平板怎麽好用?
  • 下一篇:汽車模塊匹配和編程有什麽區別
  • copyright 2024編程學習大全網