運算符的優(yōu)先級使得一些運算符優(yōu)先于其他運算符,高優(yōu)先級的運算符會先被計算。
結合性定義相同優(yōu)先級的運算符在一起時是怎么組合或關聯(lián)的,是和左邊的一組呢,還是和右邊的一組。意思就是,到底是和左邊的表達式結合呢,還是和右邊的表達式結合?
在混合表達式中,運算符的優(yōu)先級和結合性是非常重要的。舉個例子,為什么下列表達式的結果為4?
2 + 3 * 4 % 5
// 結果是 4
如果嚴格地從左計算到右,計算過程會是這樣:
但是正確答案是4而不是0。優(yōu)先級高的運算符要先計算,在Swift和C語言中,都是先乘除后加減的。所以,執(zhí)行完乘法和求余運算才能執(zhí)行加減運算。
乘法和求余擁有相同的優(yōu)先級,在運算過程中,我們還需要結合性,乘法和求余運算都是左結合的。這相當于在表達式中有隱藏的括號讓運算從左開始。
2 + ((3 * 4) % 5)
3 * 4 = 12,所以這相當于:
2 + (12 % 5)
12 % 5 = 2,所這又相當于
2 + 2
計算結果為 4。
查閱Swift運算符的優(yōu)先級和結合性的完整列表,請看表達式。
注意:
Swift的運算符較C語言和Objective-C來得更簡單和保守,這意味著跟基于C的語言可能不一樣。所以,在移植已有代碼到Swift時,注意去確保代碼按你想的那樣去執(zhí)行。