运算符是一个符号,告诉编译器执行特定的数学或逻辑操作, 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

示例

  1. for index in 1...10 {  
  2.     print("\(index) times 5 is \(index * 5)")  
  3. }  

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

参考链接

https://www.learnfk.com/swift/swift-operators.html