<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Swift 運算符的優先級和關聯性 > 原文: [https://www.programiz.com/swift-programming/operator-precedence-associativity](https://www.programiz.com/swift-programming/operator-precedence-associativity) #### 在本文中,您將了解用于計算帶有運算符和操作數的表達式的規則。 ## Swift 運算符優先級 運算符優先級是用于求值給定數學表達式的規則的集合。 當在單個表達式中使用多個運算符時,將按稱為運算符優先級的特定順序求值每個部分。 某些運算符的優先級高于其他運算符,這會影響表達式的求值方式。 * * * ### 運算符優先級表 下表列出了[運算符的優先級](/swift-programming/operators "Swift operators")。 它在表格中顯示的越高,其優先級越高。 Swift Standard Library Precedence Groups (Highest to Lowest) | 運算符分組 | 例子 | | --- | --- | | 按位移位優先級 | `& | ^ ~ >> << >>>` | | 乘法優先級 | `* % /` | | 加法優先級 | `+ - + -` | | 范圍優先級 | `..< ...` | | 轉換優先級 | `as` | | NIL 推斷優先級 | `??` | | 比較優先級 | `!= > < >= <= === ==` | | 邏輯合取優先級 | `&&` | | 邏輯析取優先級 | <code>&#124;&#124;</code> | | 默認優先級 | `~>` | | 三元優先級 | `?:` | | 函數箭頭優先級 | `()` | | 賦值優先級 | <code>&#124;= %= /= <<= >>= &= *= >>= <<= ^= += -=</code> | * * * ### 示例 1:Swift 運算符優先級 ```swift let x = 4 + 5 * 5 print(x) ``` 當您運行上述程序時,輸出將是: ```swift 29 ``` 在上面的示例中,如果從左到右讀取表達式,則可能期望輸出為 45。但是,乘法運算符的優先級高于加法運算符,因此表達式`4 + 5 * 5`的求值為`4 + (5 * 5)`。 因此,`print(x)`在屏幕上輸出 29。 執行步驟 | 步驟 | 運算符 | 表達式 | 表達式返回的值 | | --- | --- | --- | --- | | 1 | `*` | `5 * 5` | **25** | | 2 | `+` | `4 + 25` | **29** | | 3 | `=` | `print(x)` | **29** | * * * ### 示例 2:帶有復雜賦值運算符的 Swift 運算符優先級 ```swift var y = 15 y += 10 - 2 * 3 print(y) ``` 運行該程序時,輸出為: ```swift 19 ``` 在上面的示例中,表達式`var y = 15`在變量`y`中分配值 15。 在下一個表達式`y += 10 - 2 * 3`中,乘法運算符的優先級高于減法&復合賦值運算符(`+=`)。 因此,表達式`y += 10 - 2 * 3`被求值為`y = y + (10 - (2 * 3))`。 執行步驟 | 步驟 | 運算符 | 表達式 | 表達式返回的值 | | 1 | `=` | `var y = 15` | **15** | | 2 | `*` | `2 * 3` | **6** | | 3 | `-` | `10 - 6` | **4** | | 4 | `+=` | `15 + 4` | **19** | * * * ## Swift 運算符關聯性 盡管存在由運算符優先級定義的預定義規則來求值表達式,但是您可能想知道如果存在多個相同優先級的運算符會發生什么。 運算符關聯性定義了如何將具有相同優先級的運算符組合在一起。 在 Swift 中,運算符可以是左側關聯,右側關聯或沒有關聯性。 在表達式中按順序使用時,左關聯的運算符將從語句的左側開始對其操作數進行分組,右起的右關聯運算符以及沒有關聯性的運算符沒有定義的行為。 * * * ### 運算符關聯性表 下表顯示了 Swift 運算符的關聯性及其優先級。 Swift Standard Library Associativity (Precedence Highest to Lowest) | 運算符分組 | 例子 | 關聯性 | | --- | --- | --- | | 按位移位優先級 | `& | ^ ~ >> << >>>` | 左 | | 乘法優先級 | `* % /` | 左 | | 加法優先級 | `+ - + -` | 左 | | 范圍優先級 | `..< ...` | 無 | | 轉換優先級 | `as` | 無 | | NIL 推斷優先級 | `??` | 右 | | 比較優先級 | `!= > < >= <= === ==` | 無 | | 邏輯合取優先級 | `&&` | 左 | | 邏輯析取優先級 | <code>&#124;&#124;</code> | 左 | | 默認優先級 | `~>` | 無 | | 三元優先級 | `?:` | 右 | | 函數箭頭優先級 | `()` | 右 | | 賦值優先級 | <code>&#124;= %= /= <<= >>= &= *= >>= <<= ^= += -=</code> | 右 | * * * ### 示例 3:Swift 運算符關聯性 ```swift let x = 40 / 2 * 10 print(x) ``` 運行該程序時,輸出為: ```swift 200 ``` 在上面的程序中,表達式是從左到右計算的,因為運算符屬于乘法優先級組,并且具有左關聯性。 因此,除法運算較早進行,您會得到結果 **200** 。 如果要先執行乘法怎么辦? 您需要將`2 * 10`表達式包裝在`()`括號中,如下所示: ```swift let x = 40 / (2 * 10) print(x) ``` 運行該程序時,輸出為: ```swift 2 ``` 您無需記住優先級和關聯表。 在大多數情況下,運算符的優先級和關聯性本身就是有意義的。 如有疑問,您可以隨時使用該表作為參考。 另外,最好使用括號使代碼更易于理解。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看