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
- 算術運算符 “+”“-”“*”“/”“%”“++”“–”
//+可以作爲字符串鏈接符
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)
本文內容來自《瘋狂講義》