一.算術(shù)運(yùn)算符
+ - * / % ++ --- 除了取模,其它和OC一樣,包括優(yōu)先級(jí)
var result = 10 + 10
result = 10 * 10
result = 10 - 10
result = 10 / 10
print(result)
-
注意: Swift是安全嚴(yán)格的編程語(yǔ)言, 會(huì)在編譯時(shí)候檢查是否溢出, 但是只會(huì)檢查字面量而不會(huì)檢查變量, 所以在Swift中一定要注意隱式溢出, 遇到這種問(wèn)題可以利用溢出運(yùn)算符解決該問(wèn)題:
http://www.yiibai.com/swift/overflow_operators.html
溢出加法 &+
溢出減法 &-
溢出乘法 &*
溢出除法 &/
溢出求余 &%
-
取模 %
- OC: 只能對(duì)整數(shù)取模
- Swift: 支持小數(shù)取模
// NSLog(@"%d", 10 % 3);
print(10 % 3.5)
二.自增 自減
-
++i和i++這樣的格式將在swift 3.0 中取消, 因此不推薦寫(xiě)成++i或i++這樣的形式, 如果這樣寫(xiě)編譯器會(huì)報(bào)警告提示, 推薦寫(xiě)成i += 1
var number = 10
number++
print(number)number--
print(number)
三. 賦值運(yùn)算
- 基本用法和OC一樣
var num1 = 10
num1 = 20
num1 += 10
num1 -= 10
num1 /= 10
num1 *= 10
num1 %= 5
print(num1)
-
唯一要注意 的是表達(dá)式的值
- OC: 表達(dá)式的結(jié)合方向是從左至右, 整個(gè)表達(dá)式的值整體的值等于最后一個(gè)變量的值, 簡(jiǎn)而言之就是連續(xù)賦值
- Swift: 不允許連續(xù)賦值, Swift中的整個(gè)表達(dá)式是沒(méi)有值的.
- Swift不能連續(xù)賦值主要是為了避免 if (c == 9)
這種情況誤寫(xiě)為 if (c = 9) , c = 9是一個(gè)表達(dá)式,表達(dá)式是沒(méi)有值的, 所以在Swift中if (c = 9)不成立
// oc寫(xiě)法為:
int num1;
int num2;
num2 = num1 = 10;
NSLog(@"%d",num2);
//下面這個(gè)寫(xiě)法是在swift當(dāng)中不允許的
var num1:Int
var num2:Int
num2 = num1 = 10 // 這樣寫(xiě)法直接報(bào)錯(cuò)
四.關(guān)系運(yùn)算符
> < >= <= == != ?:- 關(guān)系運(yùn)算符, 得出的值是Bool值, 基本用法和OC一樣
var result1:Bool = 250 > 100
var result2 = 250 > 100 ? 250 : 100
print(result2)
五.邏輯運(yùn)算符
C語(yǔ)言和OC并沒(méi)有真正的Bool類(lèi)型
C語(yǔ)言的Bool類(lèi)型非0即真
OC語(yǔ)言的Bool類(lèi)型是typedef signed char BOOL;
Swift引入了真正的Bool類(lèi)型
Bool true false
Swift中if的條件只能是一個(gè)Bool的值或者是返回值是Bool類(lèi)型的表達(dá)式
OC中if可以是任何整數(shù)(非0即真),
但是存在的問(wèn)題是可能將判斷寫(xiě)錯(cuò), 寫(xiě)成了賦值 if(isOpen = 2)
在開(kāi)發(fā)中為了避免這個(gè)問(wèn)題
有經(jīng)驗(yàn)的程序員會(huì)這樣寫(xiě) if(2 == isOpen)來(lái)避免這個(gè)問(wèn)題.
在Swift中很好的解決了這個(gè)問(wèn)題
邏輯運(yùn)算符在swift當(dāng)中只能操作Bool類(lèi)型數(shù)據(jù)
在OC當(dāng)中是非0即真. 可以操作整形
在swift當(dāng)中不允許這種操作.其它基本和OC一致
var open = falseif !open{
print("打開(kāi)")
}
var age = 20
var height = 180
var wage = 30000
if (age > 25 && age < 40 && height > 175) || wage > 20000{
print("約約約")
}
六.區(qū)間
- 閉區(qū)間: 包含區(qū)間內(nèi)所有值 a...b 例如: 1...5, 數(shù)學(xué)區(qū)間表示 [1, 5]
- 半閉區(qū)間: 包含頭不包含尾 a..<b 例如: 1..<5, 數(shù)學(xué)區(qū)間表示 [1, 5)
-
注意:
- 1.Swift剛出來(lái)時(shí)的寫(xiě)法是 a..b
- 2.區(qū)間只能用于整數(shù), 寫(xiě)小數(shù)會(huì)有問(wèn)題
for i in 1...5{
print(i)
}
for i in 1..<5{
print(i)
}