基本运算符

目录

赋值运算符

第一个运算符我们已经使用很久了。 = 赋值运算符。

a = b 意思是使用b的值初始化或者更新a的值。

import Foundation

// 初始化常量b
let b = 10

// 初始化变量a
var a = 5

// 使用b的值更新a的值
a = b

// print输出时,可以使用,分隔多个数据,一次输出。
print(a, b)

运行结果

10 10

如果赋值运算符右侧是元组的话,可以拆解成多个常量或变量,这个上一章我们已经见过了。

import Foundation

let (name, age) = ("hzclog", 18)
print(name, age)

运行结果

hzclog 18

算数运算符

Swift支持数字类型标准的四种运算符

  • 加: +
  • 减: -
  • 乘: *
  • 除: /
  • 取余: %
print(1 + 1)
print(10 - 2)
print(3 * 5)
print(10 / 2)
print(10.0 / 2) // 做除法计算时,两个数都是整数,结果会舍弃小数部分;只要有一个是浮点数,结果就会保留小数。
print(10 % 3)

运行结果

2 8 15 5 5.0 1

加号支持字符串类型拼接

let a = "hello"
let b = "world"
print(a + b)

运行结果

helloworld

一元减运算符支持取负值

let number1 = 110

let number2 = -number1
print(number2)

let number3 = -number2
print(number3)

运行结果

-110 110

复合赋值运算符

将赋值运算符和算数运算符结合起来,就构成了复合赋值运算符。

比如加法运算符 + 与赋值运算符 = 构成运算符 +=a += 1 相当于 a = a + 1, 也就是将a的值加1以后, 重新赋值给a。

其他复合赋值运算符以此类推。

var number = 10

number += 1
print(number)

number -= 2
print(number)

number *= 3
print(number)

number /= 4
print(number)

number %= 5
print(number)

运行结果

11 9 27 6 1

比较运算符

Swift支持下面的比较运算符:

  • 相等: a == b
  • 不等: a != b
  • 大于: a > b
  • 小于: a < b
  • 大于等于: a >= b
  • 小于等于: a <= b

比较运算的结果返回的是 布尔值 , 即真或者假。 所以比较运算的结果常用于条件语句中。

1 == 1   // true
2 != 1   // true
2 > 1    // true
1 < 2    // true
1 >= 1   // true
2 <= 1   // false

逻辑运算符

逻辑运算符可以组合布尔值结果。

  • 逻辑非: !
  • 逻辑与: &&
  • 逻辑或: ||

逻辑非

前缀运算符,将紧挨着的值做布尔值反转。 使用true变为false, false变为true。

let isPayed = false
print(isPayed) // false
let notPayed = !isPayed // false取反,赋值给notPayed
print(notPayed) // true

逻辑与

逻辑与 && 两侧的值都是true, 整个表达式结果才是true; 否则就是false。

事实上, 如果第一个值为false, 甚至不会对第二个值求值。 因为无论如何, 表达式结果都不会为真, 这就是短路运算。

let zoneAllowed = false
let payed = true
print(zoneAllowed && payed) // false

尝试修改不同的变量值, 看看结果是否和预期一致。

逻辑或

逻辑或 || 两个值中只要有一个为true, 整个表达式就是true; 全部为false时, 表达式的结果才是false。

同理, 如果第一个值已经是true, 也不会再对右边的值求值, 一样的短路运算。

let isRoot = true
let hasPassword = false
print(isRoot || hasPassword) // true

尝试修改不同的变量值, 看看结果是否和预期一致。

组合逻辑运算符

可以将多个逻辑运算符组合起来, 构成更长的复合表达式。

再长的表达式, 依旧是左关联的, 即首先计算最左边的子表达式。

let correctAccount = true // 输入正确的账号
let correctPassword = false // 输入了正确的密码
let isRoot = true // 管理员身份
let useSuperPassword = false // 使用了超级密码

print(correctAccount && correctPassword || isRoot || useSuperPassword) // true

这个看起来很长的表达式, 意思就是:

如果输入了正确的账号和密码,或者是管理员身份,或者持有超级密码,都可以满足条件。

当然最好的方式是, 在使用很长的逻辑运算表达式时, 使用圆括号表达明确意图。 所以下面这样相对更好一些:

(correctAccount && correctPassword) || isRoot || useSuperPassword

使用括号清晰的说明: 前两个值运算结果视为一种单独状态。 这样做不会影响输出, 但是可读性更好。 要知道, 代码可读性优先于简洁性。

下一章

本章主要说明了Swift中基本运算符的使用。 运算符在编程中扮演着至关重要的角色,因为它们是进行各种计算、操作和逻辑判断的基础。

下一章中, 我们一起看看字符串和字符。