运算符是一个符号,告诉编译器执行特定的数学或逻辑操作, Swift包含丰富的内置运算符,并提供以下类型的运算符-
- 算术运算符
- 比较运算符
- 逻辑运算符
- 按位运算符
- 范围运算符
- 其它运算符
本教程将逐一说明算术,关系,逻辑,按位,赋值和其他运算符。
算术运算符
下表显示了Swift 4语言支持的所有算术运算符。假设变量 A =10,变量 B =20,则-
运算符 | 说明 | 示例 |
---|---|---|
+ | 相加 | A + B=30 |
- | 相减 | A - B=-10 |
* | 相乘 | A * B=200 |
/ | 相除 | B/A=2 |
% | 取模 | B%A=0 |
++ | 增量运算符将整数值加1 | A ++=11 |
- | 减量运算符将整数值减一 | A--=9 |
10 + 20 //equals 30 50 - 30 //equals 20 20 * 3 //equals 60 10.0/2.5 //equals 4.0
比较运算符
下表显示了Swift 4语言支持的所有关系运算符。假设变量 A =10,变量 B =20,则-
运算符 | 描述 | 示例 |
---|---|---|
== | 相等 | (A == B) is not true. |
!= | 不相等 | (A != B) is true. |
> | 大于 | (A > B) is not true. |
< | 小于 | (A < B) is true. |
>= | 大于或等于 | (A >= B) is not true. |
<= | 小于或等于 | (A <= B) is true. |
1 == 1 //true 因为 1 等于 1 2 != 1 //true 因为 2 不等于 1 (好像好废话....) 2 > 1 //true 因为 2 大于 1 1 < 2 1 >= 1 2 <= 1
示例
let name = "Learnfk" if name == "Learnfk" { print("hello, Learnfk") } else { print("I am sorry. I don't recognize you") } // 打印“hello, Learnfk”,因为 name 确实等于“Learnfk”。
输出
hello, Learnfk
逻辑运算符
下表显示了Swift 4语言支持的所有逻辑运算符。假设变量 A 保持1,变量 B 保持0,则-
运算符 | 描述 | 示例 |
---|---|---|
&& | 逻辑AND | (A && B) is false. |
|| | 逻辑OR | (A || B) is true. |
! | 逻辑非 | !(A && B) is true. |
按位运算符
按位运算符对位进行运算并执行逐位运算。&,|和^的真值表如下-
p | q | p&q | p|q | p^q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Assume A=60; and B=13; In binary format, they will be as follows: 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,则7-
运算符 | 描述 | 示例 |
---|---|---|
& | 按位 AND | (A & B)=12, which is 0000 1100 |
| | 按位 OR | (A | B)=61, which is 0011 1101 |
^ | 按位 XOR | (A ^ B)=49, which is 0011 0001 |
~ | 按位 非 | (~A )=-61, which is 1100 0011 in 2's complement form. |
<< | 左移,左移一位乘以2 | (A << 2=240, which is 1111 0000 |
>> | 右移,右移一位除以2 | A >> 2=15, which is 0000 1111 |
范围运算符
Swift 4包含两个范围运算符,它们是表示一系列值的快捷方式。下表说明了这两个运算符。
运算符 | 描述 | 示例 |
---|---|---|
Closed Range | (a ... b)定义了一个从a到b的范围,并包括值a和b。 | 1...5 gives 1, 2, 3, 4 and 5 |
Half-Open Range | (a .. <b)定义了从a到b的范围,但不包括b。 | 1..< 5 gives 1, 2, 3, and 4 |
One- sided Range |
a…,定义了一个范围,从a到element的结尾 …a,定义了从开始到a的范围 |
1…给出1,2,3…元素的结尾 …2开始…至1,2 |
示例
- for index in 1...10 {
- print("\(index) times 5 is \(index * 5)")
- }
Output:
1 times 5 is 5 2 times 5 is 10 3 times 5 is 15 4 times 5 is 20 5 times 5 is 25 6 times 5 is 30 7 times 5 is 35 8 times 5 is 40 9 times 5 is 45 10 times 5 is 50
其它运算符
Swift 4支持其他一些重要的运算符,包括 range 和? :如下表所述。
运算符 | 描述 | 示例 |
---|---|---|
三元条件 | 条件? X:Y | 如果条件为true?然后取值X:否则取值Y |
运算符优先级
在这里,优先级最高的运算符出现在表格的顶部,而优先级最低的运算符出现在表格的底部。在表达式中,优先级较高的运算符将首先被判断。
运算符 | 描述 | 示例 |
---|---|---|
Primary Expression Operators | () [] . expr++ expr-- | left-to-right |
Unary Operators |
* & + - ! ~ ++expr --expr */% + - >> << < > <= >= == != |
right-to-left |
Binary Operators |
& ^ | && || |
left-to-right |
Ternary Operator | ?: | right-to-left |
Assignment Operators | = += -= *= /= %= >>= <<= &=^= |= | right-to-left |
Comma | , | left-to-right |