18 高階運算子

2021-10-10 18:17:50 字數 3343 閱讀 6125

var min = uint8.min

print(min &- 1) // 255, int8.max

var max = uint8.max

print(max &+ 1) // 0, int8.min

print(max &* 2) // 254, 等價於 max &+ max

swift 為以下型別提供預設的 equatable 實現:

注:

引用型別比較儲存的位址值是否相等(是否引用著同乙個物件),使用恒等運算子===、!==

想要比較2個例項的大小,一般的做法是:

struct student: comparable 

static func < (lhs: student, rhs: student) -> bool

static func > (lhs: student, rhs: student) -> bool

static func <= (lhs: student, rhs: student) -> bool

static func >= (lhs: student, rhs: student) -> bool

}var stu1 = student(score: 100, age: 20)

var stu2 = student(score: 98, age: 18)

var stu3 = student(score: 100, age: 20)

print(stu1 > stu2) // true

print(stu1 >= stu2) // true

print(stu1 >= stu3) // true

print(stu2 <= stu1) // true

print(stu2 < stu1) // true

print(stu2 <= stu1) // true

可以自定義新的運算子,在全域性作用域使用 operator進行宣告

prefixoperator字首運算子

postfixoperator字尾運算子

infixoperator中綴運算子 : 優先順序組

precedencegroup優先順序組

prefix operator +++

infix operator +-

struct point

static func +- (left: point, right: point) -> point

static func +- (left: point?, right: point) -> point

}struct person

var person: person? = nil

print(person?.point +- point(x: 10, y: 20)) // point(x: 10, y: -20)

Swift 高階運算子

高階運算子 向上溢位 向下溢位 除零溢位,0作為被除數時結果是0 模零溢位,對 0求餘結果是0 varwilloverflow uint8 max 等於 255 willoverflow willoverflow 1 等於0 willoverflow willoverflow 1 等於2 varwi...

swift高階運算子

1.按位取反運算子 兩個進行比較,如果對方是0,那麼另一方就得取1,相反。let initialbits uint8 0b00001111 let invertedbits initialbits 等於 0b11110000 2.按位與運算子 兩個進行比較,當兩方都為1時,結果才會為1。let fi...

C C 運算子高階

1 轉換運算子 一種特殊的類成員函式。定義該運算子後,編譯器將在可以使用內建轉換的地方自動呼叫它 class smallint 轉換函式必須是成員函式,通常定義為const operator int const private std size t m val int main si轉換成int,再...