三.溢出运算符
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.??运算符的左操作数可以不是可选类型的,但是这样的话,使用??就没有意义了。