运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 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 * / % + - >> << < > <= >= == != |
右到左 |
| 二元运算符 | & ^ Ι && ΙΙ | 左到右 |
| 三元运算符 | ?: |
右到左 |
| 赋值运算符 | = += -= *= /= %= >>= <<= &= ^= Ι= |
右到左 |
| 逗号 | , |
左到右 |
上一篇:
Swift字面量(文字)
下一篇:
Swift决策结构
