运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 Swift内置运算符丰富,它提供以下类型的运算符 -
- 算术运算符
- 比较运算符
- 逻辑运算符
- 按位运算符
- 分配运算符
- 范围运算符
- 杂项运算符
本教程将逐一解释算术,关系,逻辑,按位,赋值和其他运算符。
1. 算术运算符
下表显示了Swift 4语言支持的所有算术运算符。 假设变量A=10
,变量B=20
,则 -
运算符 | 描述 | 示例 |
---|---|---|
+ |
两个操作数相加 | A + B 结果为30 。 |
- |
从第一个操作数减去第二个操作数 | A - B 结果为-10 。 |
* |
两个操作数相乘 | A * B 结果为200 。 |
/ |
分子除以分母 | B / A 结果为2 。 |
% |
模数运算符和整数/浮点除法后的余数 | B % A 结果为0 。 |
2.比较运算符
下表显示了Swift 4语言支持的所有关系运算符。 假设变量A=10
,变量B=20
,则 -
运算符 | 描述 | 示例 | |
---|---|---|---|
== |
检查两个操作数的值是否相等; 如果相等,则条件成立。 | (A == B) 结果为假。 |
|
!= |
检查两个操作数的值是否相等; 如果不相等,则条件成立。 | (A != B) 结果为真。 |
|
> |
检查左操作数的值是否大于右操作数的值; 如果是,则条件成立。 | A > B 结果为假。 |
|
< |
检查左操作数的值是否小于右操作数的值; 如果是,则条件成立。 | A < B 结果为真。 |
|
>= |
检查左操作数的值是否大于等于右操作数的值; 如果是,则条件成立。 | A >= B 结果为假。 |
|
<= |
检查左操作数的值是否小于等于右操作数的值; 如果是,则条件成立。 | A <= B 结果为真。 |
3.逻辑运算符
下表显示了Swift 4语言支持的所有逻辑运算符。 假设变量A=1
,而变量B=0
,则 -
运算符 | 描述 | 示例 |
---|---|---|
&& |
逻辑与运算符。如果两个操作数都不为零,则条件成立。 | (A && B) 结果为假。 |
ΙΙ | 逻辑或运算符。 如果两个操作数中的任何一个非零,则条件成立。 | (A ΙΙ B)结果为真。 |
! |
逻辑非运算符。用于反转其操作数的逻辑状态。 如果条件为真,则逻辑非运算符将使其为假。 | !(A && B) 结果为真。 |
4.按位运算符
按位运算符处理位并执行逐位操作。 &
,|
和^
的真值表如下 -
假设A = 60; 和B = 13;
在二进制格式中,它们将如下:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A = 1100 0011
下表列出了Swift 4语言支持的按位运算符。 假设变量A=60
,变量B=13
,则 -
运算符 | 描述 | 示例 |
---|---|---|
& |
二进制与运算符将一个位复制到结果中(如果它存在于两个操作数中)。 | (A & B) 结果为:12 , 也就是:0000 1100 |
Ι | 二进制或运算符复制一个位,如果它存在于任一操作数中。 | (A Ι B)结果为:61 , 也就是:0011 1101 |
^ |
二进制异或运算符复制位,如果它在一个操作数中设置但不是两者都设置。 | (A ^ B) 结果为:49 , 也就是:0011 0001 |
~ |
二元一元补语运算符是一元的,具有“翻转”位的效果。 | (~A) 结果为-61 ,即2 的补码形式为:1100 0011 。 |
<< |
二进制左移运算符,左操作数值向左移动右操作数指定的位数。 | (A << 2 结果为:240 , 也就是:1111 0000 |
>> |
二进制右移运算符。左操作数值向右移动右操作数指定的位数。 | A >> 2 结果为:15 , 也就是:0000 1111 |
4.分配运算符
Swift 4支持以下赋值运算符 -
运算符 | 描述 | 示例 |
---|---|---|
= |
简单赋值运算符,将右侧操作数的值分配给左侧操作数。 | 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 |
Ι= | 按位包含OR和赋值运算符 | C Ι= 2 相当于 C = C Ι 2 |
5.范围运算符
Swift 4包括两个范围运算符,它们是表示一系列值的快捷方式。 下表解释了这两个运算符。
运算符 | 描述 | 示例 |
---|---|---|
封闭范围 | (a ... b) 定义从a 到b 的范围,并包括值a 和b 。 |
1 ... 5 表示范围:1,2,3,4,5 |
半开放范围 | (a..< b) 定义从a 到b 的范围,但不包括值b |
1..< 5 表示范围:1, 2, 3, 4 |
单侧范围 | a ... ,定义从元素到结尾的范围;... a ,定义从开始到a 的范围 |
1 ... 给出1,2,3 ... 到元素的结尾,... 2 开始... 到1,2` |
6.其它运算符
Swift 4支持其他一些重要的运算符,包括范围和?:
,如下表所示。
运算符 | 描述 | 示例 |
---|---|---|
一元减号 | 使用前缀符号- 来切换数值 |
-3 或 -4 |
一元加号 | 返回它操作的值,不做任何更改。 | +6 结果为6 |
三元条件 | 条件 ? X : Y | 如果条件为真? 然后是值X :否则为Y 值 |
7.运算符优先级
运算符优先级确定表达式中的术语分组。 这会影响表达式的计算方式。 某些运算符的优先级高于其他运算符; 例如,乘法运算符的优先级高于加法运算符。
例如,x = 7 + 3 * 2
; 这里,x
被赋值为13
,而不是20
,因为运算符 *
的优先级高于+
,所以它首先执行3 * 2
然后再加上7
。
此处,具有最高优先级的运算符显示在表的顶部,具有最低优先级的运算符显示在底部。 在表达式中,将首先评估更高优先级的运算符。
运算符 | 描述 | 顺序 |
---|---|---|
主表达式运算符 | () [] . expr++ expr-- |
左到右 |
一元运算符 | * & + - ! ~ ++expr --expr * / % + - >> << < > <= >= == != |
右到左 |
二元运算符 | & ^ Ι && ΙΙ | 左到右 |
三元运算符 | ?: |
右到左 |
赋值运算符 | = += -= *= /= %= >>= <<= &= ^= Ι= |
右到左 |
逗号 | , |
左到右 |