iOS開發Swift篇 (四)運算子

2022-08-30 04:15:11 字數 3770 閱讀 9275

一、運算子

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...