位置:首頁 > 高級語言 > Swift教學 > Swift優先級和結合性

Swift優先級和結合性

優先級和結合性

運算符的優先級使得一些運算符優先於其他運算符,高優先級的運算符會先被計算。

結合性定義相同優先級的運算符在一起時是怎麼組合或關聯的,是和左邊的一組呢,還是和右邊的一組。意思就是,到底是和左邊的表達式結合呢,還是和右邊的表達式結合?

在混合表達式中,運算符的優先級和結合性是非常重要的。舉個例子,為什麼下列表達式的結果為4

2 + 3 * 4 % 5
// 結果是 4

如果嚴格地從左計算到右,計算過程會是這樣:

  • 2 + 3 = 5
  • 5 * 4 = 20
  • 20 / 5 = 4 餘 0

但是正確答案是4而不是0。優先級高的運算符要先計算,在Swift和C語言中,都是先乘除後加減的。所以,執行完乘法和求餘運算才能執行加減運算。

乘法和求餘擁有相同的優先級,在運算過程中,我們還需要結合性,乘法和求餘運算都是左結合的。這相當於在表達式中有隱藏的括號讓運算從左開始。

2 + ((3 * 4) % 5)

3 * 4 = 12,所以這相當於:

2 + (12 % 5)

12 % 5 = 2,所這又相當於

2 + 2

計算結果為 4。

查閱Swift運算符的優先級和結合性的完整列表,請看表達式


注意:
Swift的運算符較C語言和Objective-C來得更簡單和保守,這意味著跟基於C的語言可能不一樣。所以,在移植已有代碼到Swift時,注意去確保代碼按你想的那樣去執行。