Swift 基本运算符(笔记)

来源:互联网 发布:linux 没有nslookup 编辑:程序博客网 时间:2024/04/30 14:32

/********************基本运算符*********************/


// 运算符就是检测,改变,合并值的特殊符号或短语


// = 不再有返回值,防止把==写成=又不报错

// + - * / %不会被允许溢出,如果要处理溢出,有特殊的溢出运算符

// 浮点数可以取余

// 区间运算符 a..<b a...b


/********************术语**********************/


// 运算符分为一元,二元,三元运算符


// 一元运算符对单一操作对象操作

// 前置运算符!a,后置运算符a++


// 二元运算符操作俩对象是中置的 2+3


// 三元,三目运算符  a?b:c


// 操作数

// 手运算符影响的 a+b  +是运算符, a,b是操作数


// 赋值运算符  a = b

let b = 10

var a = b

print(a)


// 如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或者变量

let (x,y) = (2,3)

print(x)

print(y)


// x = y 不会自动判定真假了

//if x = y {

//    // 此句错误,因为 x = y不返回任意值

//}


/********************算术运算符****************/

let a1 = 6

let b1 = 2


var c1 = a1 +b1

print(c1)

c1 = a1 - b1

print(c1)

c1 = a1 * b1

print(c1)

c1 = a1 / b1

print(c1)



// 数组运算中不能溢出,如果溢出,用溢出运算符 a &+ b


// 加法运算也能用在 String

let d1 = "hello," +"world"

print(d1)

// 打印结果 hello,world


// 求余运算符 (取模运算符,对于负数的操作)

let e1 = 4

c1 = a1 % e1

print(c1)


// 在对负数取余的时候,负号会被忽略

let f1 = -4

c1 = a1 % f1

print(c1)


// 也就是说. 6%4 == 6%-4


// swift 可以对浮点数进行取余

// 类型必须一样,如果有 int类型的必须转成浮点数,例如例子中的a1

let g1 = 2.2

let h1 = Double(a1) %g1

print(h1)


// 自增或自减运算

var a2 = 6

var b2 = 0

b2 = a2++

print("a2 ==\(a2) ,b2 ==\(b2)")// 结果a2 = 7,b2 = 6

b2 = ++a2

print("a2 ==\(a2) ,b2 ==\(b2)")// a2 = 8.b2 = 8

b2 = a2--

print("a2 ==\(a2) ,b2 ==\(b2)")// a2 = 7,b2 = 6

b2 = --a2

print("a2 ==\(a2) ,b2 ==\(b2)")// a2 = 6,b2 = 6


// ++在前先++再返回,++在后先返回后++


// 组合运算符

var a3 = 5

a3 += 3

print(a3)

a3 -= 2

print(a3)

a3 *= 2

print(a3)

a3 /= 5

print(a3)


// 比较运算符

// 返回的都是标识表达式是否成立的布尔值

// 多用于判断语句


// a == b

// a != b

// a > b

// a < b

// a >= b

// a <= b


// swift新提供的===!== 这两个比较符来判定两个对象是否同时引用同一个实例对象

// 在类与结构中详解


let name = "world"

if name =="world" {

    print("hello , world")

} else {

    print("I'm sorry\(name),but I don't recognize you")

}


// 三母运算符

// 没啥说的..把文档的例子抄一遍吧


// eg1

let contentHeight1 = 40

let hasHeader1 = true

let rowHeight1 = contentHeight1 + (hasHeader1 ?50 : 20)

print(rowHeight1)


// 相当于

// eg2

let contentHeight2 = 40

let hasHeader2 = true

var rowHeight2 = contentHeight2

if hasHeader2 {

    rowHeight2 = contentHeight2 + 50

} else {

    rowHeight2 = contentHeight2 + 20

}

print(rowHeight2)


/***************************空合运算符******************************/


// (a??b)

// a包含一个值进行解封,如果 a有值就解封成功,如果没有,就给他一个默认的 b


// a 必须是 optional类型

// 默认 b的类型必须要和 a 存储值的类型保持一致


// 表示为 a != nil ? a! : b




/*************************区间运算符*********************/


// 闭区间运算符(a...b)定义一个包含从 a b (包含 a b)的所有值的区间,b必须大于等于 a


for index in1...5 {

    print("\(index) * 5 =\(index * 5)")

}


// 半开区间运算符

// 半开区间(a..<b)定义一个从 a b 但不包括 b的区间,这个区间包含第一个值不包含最后一个


// 读取从0开始的列表(如数组),非常方便

let names = ["A","B","C","D"]

let count = names.count

for i in 0..<count {

    print("\(i+1)个人叫\(names[i])")

}


/*******************逻辑运算符******************/


// 逻辑运算符,必须是一个布尔值,也就是说不是 true 就是 false


// 逻辑非

let a4 = false

if !a4 {

    print("yes")

} else {

    print("no")

}


//let b4 = "111"

//if !b4 {

//    // 错误

//}


// 逻辑与和逻辑或 都必须是两个布尔值


// 多个逻辑运算来表达一个符合逻辑的时候,从左到右依次判定

let a5 = true

let b5 = false

let c5 = true

let d5 = false

if a5 && b5 || c5 || d5 {

    

}

// 必须 a5b5都对,或者c5,最后或者 d5对才会执行



// 使用括号可以用来确定优先级


0 0
原创粉丝点击