一、運算子
1.swift所支援的部分運算子有以下一些
賦值運算子:=
復合賦值運算子:+=、-=
算術運算子:+、-、*、/
求餘運算子:%
自增、自減運算子:++、--
比較運算子:==、!=、>、=、<=
邏輯運算子:&&、||、!
三目運算子:? :
範圍運算子:..< 、...
溢位運算子:&+、&-、&*、&/、&%
2.賦值運算子
(1)1對1賦值
var a = 5
let b = 20
(2)n對n賦值(元組)
let (x, y) = (1, 2) // x的值是1,y的值是2,並且都是常量
注意:跟c\oc不一樣的是:swift的賦值運算子沒有返回值
if (x = y)
// 上面的**是錯誤的,因為x = y並沒有返回具體的值
說明:這樣的好處是防止誤用 = 和 ==
3.算術運算子
簡單使用
4.求餘運算子
%在swift中叫「求餘運算子」,也有語言叫做「模運算子」
9 % 4 // 1
-9 % 4 // -1
9 % -4 // 1
-9 % -4 // -1
注意:跟c語言不一樣的是,swift的%支援浮點數的計算
8 % 2.5 // 0.5
5.bool型別
bool型別,也被稱為邏輯型別(logical),就2種取值
true:真
false:假
注意:在c語言中:0是假,非0就是真;而在swift中沒有這種概念
if語句的條件必須是bool型別的值
(1)錯誤寫法
if (10) {
println("條件成立")
(2)正確寫法
if (true) {
println("條件成立")
6.三目運算子
比較運算子\邏輯運算子會返回bool型別的值,取值有2種可能
true:真,6 > 5,(7 > 6) && (9 != 7)
false:假,6 < 5,(7 >= 6) && (9 == 7)
三目運算子的條件必須是bool型別的值
(1)錯誤寫法
let a = 10
let c = a ? 100 : 200
(2)正確寫法
let c = a != 0 ? 100 : 200
let c = false ? 100 : 200
7.範圍運算子
範圍運算子用來表示乙個範圍,有2種型別的範圍運算子
閉合範圍運算子:a...b,表示[a, b],包含a和b
半閉合範圍運算子:a..舉例:
// index的值從1~5
// index的值從1~4
8.溢位運算子
(1)簡單說明
每種資料型別都有自己的取值範圍,預設情況下,一旦賦了乙個超出取值範圍的數值,會產生編譯或者執行時錯誤
注意:下面的寫法是錯誤的
let x = uint8.max
let y = x + 1
第2行**會在執行時報錯(執行時錯誤)
swfit為整型計算提供了5個&開頭的溢位運算子,能對超出取值範圍的數值進行靈活處理
溢位加法 &+
溢位減法 &-
溢位乘法 &*
溢位除法 &/
溢位求餘 &%
(2)值的上溢
let x = uint8.max
let y = x &+ 1
第1行**過後:x的值是 255(最大值)
第2行**過後:y的值是 0(最小值)
(3)值的下溢
let x = uint8.min
let y = x &- 1
第1行**過後:x的值是 0(最小值)
第2行**過後:y的值是 255(最大值)
有符號整數也有類似的溢位現象
let x = int8.min
let y = x &- 1
第1行**過後:x的值是 -128(最小值)
第2行**過後:y的值是 127(最大值)
(4)除零溢位
預設情況下,乙個數除於0,或者對0求餘數,編譯器會直接報錯
let x = 10
let y = x / 0
let z = x % 0
第2、3行**:編譯器都會報錯
如果使用溢位運算子,就不會報錯
let x = 10
let y = x &/ 0
let z = x &% 0
y和z的值最終都是0
二、斷言
1.簡單說明
斷言是一種實時檢測條件是否為true的方法
如果條件為true,那麼**繼續執行
如果條件為false,就丟擲錯誤資訊,直接終止程式的執行
2.斷言的用法
使用全域性的assert函式
assert函式接收乙個bool表示式和乙個斷言失敗時顯示的訊息
assert(index >= 0, "index必須大於0")
如果index大於等於0,就繼續執行後面的**
如果index小於0,就丟擲錯誤資訊(下面的黑色字),直接終止程式的執行
assertion failed: index必須大於0
assert(index >= 0)
可以省略錯誤資訊,但不推薦,這樣不利於除錯
3.使用場景和注意
(1)下面的場景,可能用到斷言
檢測陣列的索引:不能太小或者太大,否則造成陣列越界
檢測傳遞給函式的引數:如果是無效引數,將不能在該函式中使用
(2)斷言的使用注意
斷言會導致程式執行的中止,如果不管條件是否成立,都要繼續往下執行**,那就不能用斷言
斷言可以保證錯誤在開發過程中會被及時發現,但發布的應用裡最好不要使用
如果乙個程式用著用著就突然崩潰閃退,會嚴重影響使用者體驗
Swift 高階運算子
高階運算子 向上溢位 向下溢位 除零溢位,0作為被除數時結果是0 模零溢位,對 0求餘結果是0 varwilloverflow uint8 max 等於 255 willoverflow willoverflow 1 等於0 willoverflow willoverflow 1 等於2 varwi...
swift 比較運算子
import foundation 比較運算子中的 比較 二字指的是兩個運算數值分量間的大小關係,與數學意義上的比較概念相同,只不過比較運算子的表示方式喲所不同。等於 a b 不等於 a b 大於 a b 小於 a b 大於等於 a b 小於等於 a b 恒等 不恒等 每乙個比較運算都會返回乙個標識...
Swift 位運算子
import foundation 位運算子通常在如影象處理和建立裝置驅動等底層開發中使用,使用它可以單獨運算元據結構中原始資料的位元位。去使用乙個定義的協議進行通訊的時候,運用位運算子來對原始資料進行編碼和解碼也是非常有效的。1.按位取反運算子 按位取反運算子 是對乙個運算元的每一位都取反 let...