Swift運算符

Swift運算符

包括比較運算符,邏輯運算符,範圍運算符,和位運算符。Swift允許重載運算符,也可以自定義運算符。

1. 賦值運算符 “=”
用於將一個變量,常量或表達式的值賦值給另一個變量。

        //爲變量str賦值
        var str = "is good"
        //爲變量p賦值
        var p:Double = 3.14
        //爲變量v賦值
        var v:Bool = true
        //將一個變量賦值給另一個變量
        var str2:String = str
        //將一個表達式的值賦給變量
        var d:Double = 12.34
        //將表達式的值賦給d2
        var d2 = d + 5
        println(d2)
   需要注意的是,Swift不支持連續賦值,Swift的賦值語句沒有返回值,Swift編譯器可防止把等號“==”寫成賦值符“=”導致的錯誤。
        var a:Int
        //由於賦值表達式a=20,實際上是沒有值的,因此編譯器對變量b發出警告
        var b = a = 20
  1. 算術運算符 “+”“-”“*”“/”“%”“++”“–”
        //+可以作爲字符串鏈接符
        var a = 5.4
        var b = 3.2
        var sum = a + b
        println("sum的值:\(sum)")
        var s:String = "is good"
        var d:String = "ha ha"
        var u:String = s + d
        println("u is \(u)")

        //-
        var c = 5.3
        var d = 3.2
        var sub = c - d
        println(sub)
        //*
        var e = 5.2
        var f = 3.1
        var multiply = e * f
        println("multiply \(multiply)")
  運算符"/"需要注意的是如果兩個操作數都是整數類型,側記過也是整數,結果,是自然除法的截斷取整。除數不可以爲0。如果有一個是浮點型,或者兩個都是浮點型,側結果和自然除法的結果一樣,除數可以是0或0.0,得到的結果是正無窮大或富無窮大。
        println("13/3的結果\(13/3)")//結果是4
        var a = 5.2
        var b = 3.1
        var div = a / b
        println(div)//div=1.67741935483871
        //輸出正無窮大inf
        println("\(5 / 0.0)")
        //輸出負無窮大-inf
        println("\(-5.0 / 0)")

//        println("5除以0 \(5 / 0)")//報錯

        //求餘運算%,支付浮點型求餘,當求餘運算的兩個操作數中,有一個或者兩個浮點數,允許第二個操作數是0或者0.0,結果是非數:nan
        var a = 5.2
        var b = 3.1
        var mod = a % b
        println(mod)//2.1
        println("\(-5.2 % -3.1)")//-2.1
        println("\(-5.2 % 3.1)")//-2.1
        println("\(5 % 0.0)")//nan
        println("\(0 % 5.0)")//0.0
        println("\(-5 % 0)")//報錯
        //只要被除數是正數,不管除數是正還是負,其求餘一定是正數,反之亦然

        //++自加 --自減,只能操作變量,不能操作數值,常量或表達式。5++,6--是錯誤的

        //複雜運算,需要導入<math.h>,即導入Foundation
        //3.2的5次方
        println("\(pow(3.2, 5))")//335.54432
        //3.2的平方根
        println("\(sqrt(3.2))")//1.78885438199983
        //返回0~10的隨機數
        println("\(arc4random() % 10)")

2.溢出運算符
1.溢出加“&+”2.溢出減“&-”3.溢出乘“&*”4溢出除“&/”5溢出求餘“&%”

        //不允許常量或變量被賦值一個超出其表數範圍的數值,否則會出錯
        var a:Int16 = 32767
//        a = a + 1//報錯

3.位運算符

        //位運算符,使用位運算符可以直接操作數值的原始bit位,自定義的協議進行通信,使用原始數據進行編碼和解碼也非常有效
        //1.按位與&2.按位或|3.按位異或^4.按位取反~5.左位移運算符<<6右位移運算符>>
        println(5 & 9)//1
        println(5 | 9)//13
        //按位異或,按位取反
        var a:Int32 = -5
        println(~a)//4
        println(5 ^ 9)//12

4.範圍運算符

        //範圍運算符
        //1.閉範圍運算符a...b,用於定義一個a~b(包括a,b邊界值的範圍),a不能大於b
        var range1 = 1...6
        for num in range1
        {
            println("\(num)")
        }
        //2.半開範圍運算符a..<b(包括a邊界,但不包括b邊界值,a也不能大於b)

        let books = ["sweift","OC","c","c++"]
        for index in 0..<books.count
        {
            println("\(index) is \(books[index])")
        }

        //比較運算符
        //>,>=大於或等於,<,<=小於或等於,==,!=不等於,===恆等於,!==等於
        //邏輯運算符
        //&&與,前後都必須true才返回true,&不短路與,||或,兩個操作數中有一個是ture返回就是true,|不短路或,!只需要一個操作數,^異或,當兩個操作數不同時返回true
        //三目運算符?:,
        var a = 5
        var b = 2
        var str = a > b ? "a大於b":"a不大於B"
        println(str)
        //大部分被if else 代替
        var str2:String! = nil
        if a > b
        {
            str2 = "a 大於 b"
        }
        else
        {
            str2 = "a 不大於b"
        }
        println(str2)

本文內容來自《瘋狂講義》

發佈了19 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章