当前位置: 首页 > 文档资料 > Swift 中文教程 >

运算符

优质
小牛编辑
136浏览
2023-12-01

运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 Objective-C内置运算符丰富,提供以下类型的运算符 -

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 按位运算符
  • 分配运算符
  • 范围运算符
  • 其它运算符

本教程将逐一解释算术,关系,逻辑,按位,赋值和其他运算符。

算术运算符 (Arithmetic Operators)

下表显示了Swift 4语言支持的所有算术运算符。 假设变量A保持10,变量B保持20,则 -

<!---->
操作者描述
+添加两个操作数A + B将给出30
从第一个减去第二个操作数A - B将给-10
*将两个操作数相乘A * B将给出200
/Divides numerator by denominatorB/A会给2
%模数运算符和整数/浮点除法后的余数B%A将给出0
++Increment operator increases integer value by oneA++ will give 11
--Decrement operator decreases integer value by oneA-- will give 9

比较运算符 (Comparison Operators)

下表显示了Swift 4语言支持的所有关系运算符。 假设变量A保持10,变量B保持20,则 -

操作者描述
==检查两个操作数的值是否相等; 如果是,则条件成立。(A == B)不是真的。
!=检查两个操作数的值是否相等; 如果值不相等,则条件成立。(A!= B)是真的。
>检查左操作数的值是否大于右操作数的值; 如果是,则条件成立。(A> B)不是真的。
<检查左操作数的值是否小于右操作数的值; 如果是,则条件成立。(A < B) 为真
>=检查左操作数的值是否大于或等于右操作数的值; 如果是,则条件成立。(A> = B)不是真的。
<=检查左操作数的值是否小于或等于右操作数的值; 如果是,则条件成立。(A <= B)是真的。

逻辑运算符 (Logical Operators)

下表显示了Swift 4语言支持的所有逻辑运算符。 假设变量A保持1而变量B保持0,则 -

操作者描述
&&称为逻辑AND运算符。 如果两个操作数都不为零,则条件成立。(A && B)是假的。
||称为逻辑OR运算符。 如果两个操作数中的任何一个非零,则条件变为真。(A || B)是真的。
!称为逻辑非运算符。 用于反转其操作数的逻辑状态。 如果条件为真,则Logical NOT运算符将使其为false。!(A && B)是真的。

按位运算符 (Bitwise Operators)

按位运算符处理位并执行逐位操作。 &,|和^的真值表如下 -

pqp&Qp | Qp ^ Q
00000
01011
11110
10011
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,即0000 1100
|二进制OR运算符复制一个位,如果它存在于任一操作数中。(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

赋值操作符 (Assignment Operators)

SSwift 4支持以下赋值运算符 -

操作者描述
=简单赋值运算符,将右侧操作数的值分配给左侧操作数C = A + B将A + B的值分配给C
+=添加AND赋值运算符,它将右操作数添加到左操作数并将结果赋给左操作数C + = A等于C = C + A.
-=减去AND赋值运算符,它从左操作数中减去右操作数,并将结果赋给左操作数C - = A相当于C = C - A.
*=乘以AND赋值运算符,它将右操作数与左操作数相乘,并将结果赋给左操作数C * = A等于C = C * A.
/=除以AND赋值运算符,它将左操作数除以右操作数,并将结果赋给左操作数C/= A相当于C = C/A.
%=模数AND赋值运算符,它使用两个操作数获取模数,并将结果赋给左操作数C%= A等于C = C%A
<<=左移AND赋值运算符C << = 2与C = C << 2相同
>>=右移AND赋值运算符C >> = 2与C = C >> 2相同
&=按位AND赋值运算符C&= 2与C = C&2相同
^=按位异或和赋值运算符C ^ = 2与C = C ^ 2相同
|=按位包含OR和赋值运算符C | = 2与C = C |相同 2

范围运算符

Swift 4包括两个范围运算符,它们是表示一系列值的快捷方式。 下表解释了这两个运算符。

操作者描述
封闭范围(a ... b)定义从a到b的范围,并包括值a和b。1 ... 5给出1,2,3,4和5
Half-Open Range(a .. 1 .. <5给出1,2,3和4
单侧范围

a ...,定义从元素到结尾的范围

... a,定义从start到a的范围

1 ...给出1,2,3 ......元素的结尾

...... 2开始......到1,2

其它运算符

Swift 4支持其他一些重要的运算符,包括range和? :如下表所示。

操作者描述
Unary Minus(一元减号)可以使用前缀来切换数值的符号 --3 or -4
Unary Plus (一元加号)返回它操作的值,不做任何更改。+6 gives 6
Ternary Conditional条件? X:Y如果条件为真? 然后是值X:否则为Y值

运算符优先

运算符优先级确定表达式中的术语分组。 这会影响表达式的计算方式。 某些运算符的优先级高于其他运算符; 例如,乘法运算符的优先级高于加法运算符。

例如,x = 7 + 3 * 2; 这里,x被赋值为13,而不是20,因为operator *的优先级高于+,所以它首先乘以3 * 2然后加到7中。

此处,具有最高优先级的运算符显示在表的顶部,具有最低优先级的运算符显示在底部。 在表达式中,将首先评估更高优先级的运算符。

操作者描述
主表达式运算符()[]。 expr ++ expr--left-to-right
一元运算符

*&+ - ! 〜++ expr --expr

* /%

+ -

>> <<

<> <=> =

==!=

right-to-left
二元运算符

&

^

|

&&

||

left-to-right
三元运算符?:right-to-left
分配运算符= + = - = * =/=%= >> = << =&= ^ = | =right-to-left
Comma,left-to-right