上一章Swift教程请查看:swift元组,常量和字面量
操作符是一个符号,它告诉编译器执行特定的数学或逻辑操作,Objective-C有丰富的内建操作符,并提供了以下类型的操作符:
- 算术操作符
- 比较操作符
- 逻辑操作符
- 按位操作符
- 赋值操作符
- 范围内操作符
- 混合操作符
本教程将逐一解释算术、关系、逻辑、按位、赋值和其他操作符。
算术操作符下表显示了Swift语言支持的所有算术操作符,假设变量A=10,变量B=20。
操作符
|
解释
|
例子
|
+
|
增加了两个操作数
|
A + B是30
|
?
|
从第一个操作数减去第二个操作数
|
A –
B等于-10
|
*
|
增加两个操作数
|
A * B是200
|
/
|
分子除以分母
|
B / A给2
|
%
|
模运算符和整数/浮点除法后的余数
|
B % A等于0
|
比较操作符
【swift操作符全解 –
Swift最新教程】下表显示了Swift语言支持的所有关系操作符,假设变量A=10,变量B=20。
操作符
|
解释
|
例子
|
==
|
检查两个操作数的值是否相等;
如果是,则条件为真。
|
(A == B)不是真的。
|
!=
|
检查两个操作数的值是否相等;
如果值不相等,则条件为真。
|
(A != B)是真的。
|
>
|
检查左操作数的值是否大于右操作数的值;
如果是,则条件为真。
|
(A >
B)不是真的。
|
<
|
检查左操作数的值是否小于右操作数的值;
如果是,则条件为真。
|
(A <
B)是真的。
|
>
=
|
检查左操作数的值是否大于或等于右操作数的值;
如果是,则条件为真。
|
(A >
= B)不是真的。
|
<
=
|
检查左操作数的值是否小于或等于右操作数的值;
如果是,则条件为真。
|
(A <
= B)为真。
|
逻辑操作符下表显示了Swift语言支持的所有逻辑操作符,假设变量A为1,变量B为0,则为-
操作符
|
解释
|
例子
|
&
&
|
称为逻辑和运算符。如果两个操作数都非零,则条件为真。
|
(A &
&
B)是假的。
|
||
|
称为逻辑或运算符。如果两个操作数中的任何一个非零,则条件为真。
|
(A || B)为真。
|
!
|
称为逻辑NOT操作符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑NOT操作符将使其为假。
|
(A &
&
B)是真的。
|
按位操作符位操作符对位进行操作,并逐位执行操作,关于&
、|和^的真值表如下:
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
|
假设 A = 60;
B = 13;
在二进制格式中,它们将如下所示:A = 0011 1100B = 0000 1101-----------------A &
B = 0000 1100A|B = 0011 1101A^B = 0011 0001~A = 1100 0011
下表列出了支持Swift语言的位操作符,假设变量A有60,变量B有13,然后是7:
操作符
|
解释
|
例子
|
&
|
如果结果在两个操作数中都存在,那么二进制和运算符将向结果中复制一位。
|
(A和B)给12,即0000
1100
|
|
|
如果二进制或运算符存在于任何一个操作数中,则它将复制一位。
|
(A | B)将给出61,即0011
1101
|
^
|
如果二进制XOR操作符是在一个操作数中设置的,而不是同时在两个操作数中设置,则它将复制该位。
|
(A ^ B)是49,也就是00110001
|
~
|
二进制补码操作符是一元的,具有“翻转”位的效果。
|
(~A)给出-61,它是2的补码形式1100
0011。
|
<
<
|
二进制左移位运算符。左操作数值由右操作数指定的位数向左移动。
|
(A <
<
2将给出240,即1111
0000
|
>
>
|
二进制右移位算子。左操作数值按右操作数指定的位数右移。
|
一个>
>
2会得到15,也就是0000
1111
|
赋值操作符Swift支持以下赋值操作符——
操作符
|
解释
|
例子
|
=
|
简单赋值运算符,将右侧操作数的值赋值给左侧操作数
|
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
^ 2是一样的
|
|=
|
位包含OR和赋值运算符
|
C |= 2与C
= C | 2相同
|
范围操作符Swift包含两个范围操作符,它们是表示值范围的快捷方式,下表解释了这两个操作符。
操作符
|
解释
|
例子
|
封闭的范围
|
(a…b)定义从a到b的范围,包括值a和b。
|
1……5是1
2 3 4 5
|
半开的范围
|
(一个.
.<
b)定义从a到b的范围,但不包括b。
|
1 . .<
5得到1
2 3 4
|
片面的范围
|
定义了从a到元素结束的范围
…a,定义了从起点到a的范围
|
1…给出1、2、3…元素的结束
…
2表示开始直到1, 2
|
混合操作符Swift支持包括range和?:具体见下表。
操作符 |
解释
|
例子
|
一元-
|
数字值的符号可以使用前缀-来切换
|
-3 或 -4
|
一元加
|
返回它操作的值,不做任何更改。
|
+6 给出 6
|
三元条件
|
条件?X:Y
|
如果条件为真?然后是值X:否则是值Y
|
操作符优先级操作符优先级决定了表达式中术语的分组,这将影响表达式的计算方式,某些操作符具有比其他操作符更高的优先级,例如,乘法操作符的优先级高于加法操作符。
例如,x = 7 + 3
* 2;
这里,x被赋值为13,而不是20,因为操作符*的优先级高于+,所以它首先与3*2相乘,然后与7相加。
这里,优先级最高的操作符出现在表的顶部,优先级最低的操作符出现在底部。在表达式中,优先级更高的操作符将首先求值。
操作符
|
解释
|
例子
|
主要表达式操作符
|
() [] .
expr++ expr–
|
从左到右
|
一元操作符
|
* &
+
–
! ~ ++expr –
expr
* / %
+ –
>
>
<
<
<
>
<
= >
=
== !=
|
从右到左
|
二元操作符
|
&
^
|
&
&
||
|
从左到右
|
三元运算符
|
?:
|
从右到左
|
赋值操作符
|
= += -= *= /= %= >
>
= <
<
= &
=^=
|=
|
从右到左
|
逗号
|
,
|
从左到右
|
推荐阅读