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