一.算術運算符
-
+ - * / % ++ --
- 除了取模,其它和OC一樣,包括優先級
var result = +
result = *
result = -
result = /
print(result)
-
注意: Swift是安全嚴格的程式設計語言, 會在編譯時候檢查是否溢出, 但是隻會檢查字面量而不會檢查變量, 是以在Swift中一定要注意隐式溢出, 遇到這種問題可以利用溢出運算符解決該問題:
http://www.yiibai.com/swift/overflow_operators.html
溢出加法 &+
溢出減法 &-
溢出乘法 &*
溢出除法 &/
溢出求餘 &%
- 取模 %
- OC: 隻能對整數取模
- Swift: 支援小數取模
// NSLog(@"%d", % 3);
print( % 3.5)
二.自增 自減
-
和++i
這樣的格式将在swift 3.0 中取消, 是以不推薦寫成i++
或++i
這樣的形式, 如果這樣寫編譯器會報警告提示, 推薦寫成i++
i += 1
var number =
number++
print(number)number--
print(number)
三. 指派運算
- 基本用法和OC一樣
var num1 = 10
num1 = 20
num1 += 10
num1 -= 10
num1 /= 10
num1 *= 10
num1 %= 5
print(num1)
- 唯一要注意 的是表達式的值
- OC: 表達式的結合方向是從左至右, 整個表達式的值整體的值等于最後一個變量的值, 簡而言之就是連續指派
- Swift: 不允許連續指派, Swift中的整個表達式是沒有值的.
-
Swift不能連續指派主要是為了避免 if (c == 9)
這種情況誤寫為 if (c = 9) , c = 9是一個表達式,表達式是沒有值的, 是以在Swift中if (c = 9)不成立
// oc寫法為:
int num1;
int num2;
num2 = num1 = ;
NSLog(@"%d",num2);
//下面這個寫法是在swift當中不允許的
var num1:Int
var num2:Int
num2 = num1 = // 這樣寫法直接報錯
四.關系運算符
-
> < >= <= == != ?:
- 關系運算符, 得出的值是Bool值, 基本用法和OC一樣
var result1:Bool = >
var result2 = > ? :
print(result2)
五.邏輯運算符
- C語言和OC并沒有真正的Bool類型
- C語言的Bool類型非0即真
- OC語言的Bool類型是typedef signed char BOOL;
- Swift引入了真正的Bool類型
- Bool true false
- Swift中if的條件隻能是一個Bool的值或者是傳回值是Bool類型的表達式
- OC中if可以是任何整數(非0即真),
- 但是存在的問題是可能将判斷寫錯, 寫成了指派 if(isOpen = 2)
- 在開發中為了避免這個問題
- 有經驗的程式員會這樣寫 if(2 == isOpen)來避免這個問題.
- 在Swift中很好的解決了這個問題
- 邏輯運算符在swift當中隻能操作Bool類型資料
- 在OC當中是非0即真. 可以操作整形
- 在swift當中不允許這種操作.其它基本和OC一緻
var open = falseif !open{
print("打開")
}
var age =
var height =
var wage =
if (age > && age < && height > ) || wage > {
print("約約約")
}
六.區間
- 閉區間: 包含區間内所有值 a…b 例如: 1…5, 數學區間表示 [1, 5]
- 半閉區間: 包含頭不包含尾 a..
for i in .{
print(i)
}
for i in .<{
print(i)
}