前言:
最近项目中使用的是Swift语言,与Objective-C有较大差异。
故本篇记录一下Swift中运算符相关的知识点。
Swift提供了以下几种运算符:
- 算术运算符:
+
、-
、*
、/
、%
。(注:无“自增”与“自减”运算符) - 比较运算符:
==
、!=
、>
、<
、>=
、<=
- 逻辑运算符:
&&
、||
、!
- 位运算符:
&
、|
、^
、~
、<<
、>>
、 - 赋值运算符:
=
、+=
、-=
、*=
、/=
、%=
、<<=
、>>=
、&=
、^=
、|=
- 区间运算符:闭区间
...
、半开半闭..<
- 其他运算符:一元运算符(
+
、-
)、三元运算符(条件 ? X : Y
)
一、算术运算符
下表描述了Swift语言中所支持的算术运算符,实例中,变量A
为10
,变量B
为20
。
运算符 | 描述 | 实例 |
---|---|---|
+ | 加号 | A + B 的结果为 30 |
- | 减号 | A − B 的结果为 -10 |
* | 乘号 | A * B 的结果为 200 |
/ | 除号 | B / A 的结果为 2 |
% | 求余号 | B%A 的结果为 0 |
PS:从Swift 3.0开始,Swift就已经不支持自增自减的运算符了。
不过如果你依然想使用自增自减运算符,可以通过自定义运算符实现。
相关代码如下:
自定义运算符:自增自减
extension Int {
static prefix func ++(num:inout Int) -> Int {
num += 1
return num
}
static postfix func ++(num:inout Int) -> Int {
let temp = num
num += 1
return temp
}
static prefix func --(num:inout Int) -> Int {
num -= 1
return num
}
static postfix func --(num:inout Int) -> Int {
let temp = num
num -= 1
return temp
}
}
二、比较运算符
下表格列出了 Swift 语言支持的比较运算符,实例中变量A
为10
,变量B
为20
:
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 | (A == B) 的结果为 false 。 |
!= | 不等于 | (A != B) 的结果为 true 。 |
> | 大于 | (A > B) 的结果为 false 。 |
< | 小于 | (A < B) 的结果为 true 。 |
>= | 大于等于 | (A >= B) 的结果为 false 。 |
<= | 小于等于 | (A <= B) 的结果为 true 。 |
三、逻辑运算符
下表格列出了 Swift 语言支持的逻辑运算符,实例中变量 A为true
,变量 B为false
:
运算符 | 描述 | 实例 |
---|---|---|
&& | 逻辑与。如果运算符两侧都为 true 则为 true。 | (A && B) 的结果为 false
|
|| | 逻辑或。 如果运算符两侧至少有一个为 true 则为 true。 | (A || B) 的结果为 true
|
! | 逻辑非。布尔值取反,使得true变false,false变true。 | !(A && B) 为 true 。 |
四、位运算符
4.1 “&”——按位与
-
描述:
按位与运算符对两个数进行操作,然后返回一个新的数,这个数的每个位都需要两个输入数的同一位都为1时才为1。 -
图解实例:
4.2 “ | ” ——按位或
-
描述:按位或运算符|比较两个数,然后返回一个新的数,这个数的每一位设置1的条件是两个输入数的同一位都不为0(即任意一个为1,或都为1)。
-
图解实例:
4.3 “ ^ ” ——按位异或
-
描述:按位异或运算符^比较两个数,然后返回一个数,这个数的每个位设为1的条件是两个输入数的同一位不同,如果相同就设为0。
-
图解:
4.4 “ ~ ” ——按位取反
-
描述:按位取反运算符~对一个操作数的每一位都取反。
-
图解:
4.5 “ << ” ——按位左移
-
描述:左移操作符(<<)将操作数的所有位向左移动指定的位数。
-
图解:下图展示了11111111 << 1(11111111 左移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。
4.6 “ >> ” ——按位右移
-
描述:右移操作符(<<)将操作数的所有位向又移动指定的位数。
-
图解:下图展示了11111111 >> 1(11111111 右移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。
五、赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算,指定右边操作数赋值给左边的操作数。 | C = A + B 将 A + B 的运算结果赋值给 C |
+= | 相加后再赋值,将左右两边的操作数相加后再赋值给左边的操作数。 | C += A 相当于 C = C + A |
-= | 相减后再赋值,将左右两边的操作数相减后再赋值给左边的操作数。 | C -= A 相当于 C = C - A |
*= | 相乘后再赋值,将左右两边的操作数相乘后再赋值给左边的操作数。 | C *= A 相当于 C = C * A |
/= | 相除后再赋值,将左右两边的操作数相除后再赋值给左边的操作数。 | C /= A 相当于 C = C / A |
%= | 求余后再赋值,将左右两边的操作数求余后再赋值给左边的操作数。 | C %= A 相当于 C = C % A |
<<= | 按位左移后再赋值 | C <<= 2 相当于 C = C << 2 |
>>= | 按位右移后再赋值 | C >>= 2 相当于 C = C >> 2 |
&= | 按位与运算后赋值 | C &= 2 相当于 C = C & 2 |
^= | 按位异或运算符后再赋值 | C ^= 2 相当于 C = C ^ 2 |
|= | 按位或运算后再赋值 | C |= 2 相当于 C = C | 2 |
六、区间运算符
Swift中提供了两个区间运算符:
运算符 | 描述 | 实例 |
---|---|---|
闭区间运算符 | 闭区间运算符(a...b)定义一个包含从a到b(包括a和b)的所有值的区间,b必须大于等于a。 闭区间运算符在迭代一个区间的所有值时是非常有用的,如在for-in循环中: | 1...5 区间值为 1, 2, 3, 4 和 5 |
半开区间运算 | 半开区间(a..<b)定义一个从a到b但不包括b的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。<="" td=""> | 1..< 5 区间值为 1, 2, 3, 和 4 |
print("闭区间运算符:")
for index in 1...5 {
print("\(index) * 5 = \(index * 5)")
}
print("半开区间运算符:")
for index in 1..<5 {
print("\(index) * 5 = \(index * 5)")
}
七、其他运算符
包括一元运算符、三元运算符。
运算符 | 描述 | 实例 |
---|---|---|
一元减 | 数字前添加 - 号前缀 | -647 |
一元加 | 数字钱添加 + 号前缀 | 647 |
三元运算符 | 条件 ? X : Y | 如果添加为 true ,值为 X ,否则为 Y |
(部分图片源于网络)
推荐文章:
iOS 中精确定时的常用方法
Sign In With Apple(一)
算法小专栏:动态规划(一)
Dart基础(一)
Dart基础(二)
Dart基础(三)
Dart基础(四)
iOS 短信验证码倒计时按钮
网友评论