每天学一点Swift----运算符与表达式(二)

三.溢出运算符

1.默认情况下,Swift不允许整型变量被赋予一个超出表示范围的数,否则会报错。

2. Swift中,如果希望数据溢出时Swift程序只是对溢出的数据进行截断,而不是报错,则可以使用Swift提供的溢出运算符。

3. Swift为整型计算提供了5个以&开头的溢出运算符。

&+:溢出加

&-:溢出减

&*:溢出乘

&/:溢出除

&%:溢出求余

举个栗子:

var a : Int16 = 65535;

a = a * 10;//此时,程序不会报错,运行的结果将会把左边溢出的部分抛弃

4.值的上溢:超出的类型表示的最大范围,即真实值的左边被截断抛弃了。

5.值的下溢:超出了类型表示的最小防伪,即真实值的右边被截断抛弃了。

6.除零溢出,举个栗子:

let x = 20

let y = x / 0//报错

let z = x % 0//报错

如果写为:

let y = x &/ 0;//不会报错,得到0

let z = x &% 0;//不会报错,得到0

四.位运算符

1.位运算符通常在图形、图像处理和创建设备驱动等底层开发中使用的比较多。使用位运算符可以直接操作数据的原始

bit位。尤其是在使用自定义的协议进行通信时,使用位运算对原始数据进行编码和解码也非常有效。

2.同其他的编程语言,Swift中的位运算符有6个:

&:按位与

|:按位或

^:按位异或

~:按位取反

<<:左位移运算

>>:右位移运算

五.扩展后的赋值运算符

+=,-=,*=,/=,%=,&=,|=,^=,<<=, >>=

六.范围运算符

1.Swift提供了两个范围运算符,他们可以非常方便地构建一种数据结构,这种数据结构包含了特定范围内的所有值。

2.闭范围运算符:ā...b用于定义一个从a~b(包括a、b边界值)的所有值的范围。并且对于闭范围运算符而言,a不能

大于b

3.半开范围运算符:a..

4.使用for-in遍历的例子:

var rangle = 2...6

for num in rangle

{

print(num)

}

var books = ["abc", "123", "def", "456"]

for index in 0..

{

print("第(\index+1)本书是:(\books[index])")

}

可以看出,使用半开范围运算符对遍历数组很方便。

七.比较运算符

>, >=, <, <=, ==, !=, ===, !==

其中:

===:恒等于,该运算符通常只用于判断引用类型的变量,只有当两个引用变量都引用了同一个对象时才返回true,

否则返回false。

!==:不恒等于,同===的作用相同,只是返回值恰好相反。

八.逻辑运算符:

&&,||,!,&,|,^

九.三目运算符——?:

十. nil合并运算符

1. Swift提供了nil合并运算符:??,用法位:a ?? b;

2.功能是判断可选类型变量a是否为nil,如果a不为nil,程序将会返回可选类型a所包含的实际值;如果a为nil,则会返回默认值b。

3.使用该运算符时要求b和a所包含的类型一致。比如a是Int?,那么b就是Int类型,如果a是String?,那么b就是String类型。

4,如果??的左操作数不为nil,那么??右边的操作不会被计算,也就是说??是短路运算符。

5.??运算符的左操作数可以不是可选类型的,但是这样的话,使用??就没有意义了。

你可能感兴趣的:(每天学一点Swift----运算符与表达式(二))