演算子の優先順位は、演算子に他の演算子よりも高い優先度が与えられ、それらの演算子が先に適用されます。
演算子の結合性は、同じ優先順位の演算子が左からグループ化されるのか、右からグループ化されるかのを定義します。つまり、式を左に結合するか、右に結合するかという意味になります。
複合的な式が計算される順序を解決するときに、各演算子の優先順位と結合性を考慮することが重要です。例えば、演算子の優先順位を次の式が 17
になる理由で説明します。
2 + 3 % 4 * 5
// 17
厳密に左から右に読んでいくと、式は次のように計算されると期待するかもしれません。
2
足す3
は5
5
割る4
の余りは1
1
掛ける5
は5
しかし、実際の答えは 17
で、5
ではありません。高い優先順位の演算子は、低い優先順位の演算子よりも先に評価されます。Swift では、C と同様に、剰余演算子 (%
) と乗算演算子 (*
) が、加算演算子 (+
) よりも高い優先順位になっています。結果として、加算の前に剰余と乗算が評価されています。
一方で、剰余と乗算は互いに同じ優先順位です。評価順位を解決するには、結合性についても考慮する必要があります。剰余と乗算は共に、式を左に結合します。つまり、式を囲む丸括弧を暗黙のうちに左から追加していくと考えます。
2 + ((3 % 4) * 5)
(3 % 4)
は 3
で、次のようになります。
2 + (3 * 5)
(3 * 5)
は 15
で、次のようになります。
2 + 15
この計算の答えは最終的に 17
になります。
Swift の演算子の優先順位と結合規則の完全なリストは、Expressions を確認してください。Swift 標準ライブラリによる演算子についての情報は、Swift Standard Library Operators Reference を確認してください。
Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.