Swift快速入门(三)运算符
2016-02-06 19:14
441 查看
相关文章
Swift快速入门(一)第一个Swift程序
Swift快速入门(二)基本数据类型
Swift 的赋值语句没有返回值,所以以下代码是错误的:
加法(+)
减法(-)
乘法(*)
除法(/)
如果希望数据溢出时Swift程序只是对一出的数据位进行截断而不是导致错误,则可以使用以&开头的溢出运算符:
溢出加法 &+
溢出减法 &-
溢出乘法 &*
溢出除法 &/
溢出求余 &%
max用Int8所能承载的最大值255(二进制11111111),然后用&+加1。然后UInt8就无法表达这个新值的二进制了,也就导致了这个新值上溢出了,大家可以看下图。溢出后,新值在UInt8的承载范围内的那部分是00000000,也就是0。
UInt8的最小值是0(二进制为00000000)。使用&-进行溢出减1,就会得到二进制的11111111即十进制的255。
改为可溢出运算符:
不等于(a!= b)
大于(a > b)
小于(a < b)
大于等于(a >= b)
小于等于(a <= b)
每个比较运算都返回了一个标识表达式是否成立的布尔值:
逻辑非运算(!a)对一个布尔值取反,使得true变false,false变true。
逻辑与(a && b)表达了只有a和b的值都为true时,整个表达式的值才会是true。
逻辑或(a || b)它表示了两个逻辑表达式的其中一个为true,整个表达式就为true。
如果逻辑表达式expression为真则执行并返回第二个操作数的值; 如果不为真则执行并返回第三个操作数的值。
简单来说就是如果a为nil,则程序会返回b的值
Swift快速入门(一)第一个Swift程序
Swift快速入门(二)基本数据类型
1.赋值运算符
赋值运算(a = b),表示用b的值来初始化或更新a的值:[code]var b = 10 var a = 5 a = b // a 现在等于 10
Swift 的赋值语句没有返回值,所以以下代码是错误的:
[code]// 此句错误, 因为 x = y 并不返回任何值 if x = y { }
2.算术运算符
Swift 让所有数值类型都支持了基本的四则运算:加法(+)
减法(-)
乘法(*)
除法(/)
[code]var a=1 + 2 // 等于 3 var b=5 - 3 // 等于 2 var c=2 * 3 // 等于 6 var d=10.0 / 2.5 // 等于 4.0
3.溢出运算符
Swift不允许整型变量或者常量被赋值一个超出其表数范围的数值,如果试图这么干,则会出现运行时错误:[code]var a:Int16=32767 //a+1的值超出了Int16的表数范围,则下面的代码会导致错误 a=a+1
如果希望数据溢出时Swift程序只是对一出的数据位进行截断而不是导致错误,则可以使用以&开头的溢出运算符:
溢出加法 &+
溢出减法 &-
溢出乘法 &*
溢出除法 &/
溢出求余 &%
值的上溢
下面例子使用了溢出加法&+来处理无符号整数的上溢出:[code]// max等于UInt8的最大整数 255 var max = UInt8.max // 这时候 max 等于 0 max= max&+ 1
max用Int8所能承载的最大值255(二进制11111111),然后用&+加1。然后UInt8就无法表达这个新值的二进制了,也就导致了这个新值上溢出了,大家可以看下图。溢出后,新值在UInt8的承载范围内的那部分是00000000,也就是0。
值的下溢
数值也有可能因为太小而越界:[code]// min等于UInt8的最小值0 var min= UInt8.min // 此时 min等于 255 min= min&- 1
UInt8的最小值是0(二进制为00000000)。使用&-进行溢出减1,就会得到二进制的11111111即十进制的255。
除零溢出
整数和整数在进行除法或者求余运算时,如果被除数为0,程序将会出错:[code]let x=10 let y = x / 0 //出错
改为可溢出运算符:
[code]let x=10 let y = x &/ 0 //结果为0
4.位运算符
假设变量A=60,变量B=13,那么位运算的结果如下:[code]A = 0011 1100 B = 0000 1101 A & B = 0000 1100 //结果为12 A|B = 0011 1101 //结果为61 A^B = 0011 0001 //结果为49 ~A = 1100 0011 //结果为-61
5.范围运算符
Swift包括两个范围的运算符,用于表达值的范围。闭范围运算符
闭范围运算符a…b定义一个包含从a到b(包括a和b)的所有值的范围,其中a不能大于b。 闭范围运算符在迭代一个范围的所有值时是非常有用的,如在for-in循环中:[code]//结果为1到5 for num in 1...5 { print(num) }
半开范围运算符
半开范围运算符a..<b用于定义一个从a到b(包括a边界不包括b边界),其中a不能大于b。
[code]//结果为1到4 for num in 1..<5 { print(num) }
6.比较运算符
等于(a == b)不等于(a!= b)
大于(a > b)
小于(a < b)
大于等于(a >= b)
小于等于(a <= b)
每个比较运算都返回了一个标识表达式是否成立的布尔值:
[code]1 == 1 // true 2 != 1 // true 2 > 1 // true 1 < 2 // true 1 >= 1 // true 2 <= 1 // false
7.逻辑运算符
逻辑运算的操作对象是逻辑布尔值。Swift 支持基于 C 语言的三个标准逻辑运算。逻辑非运算(!a)对一个布尔值取反,使得true变false,false变true。
逻辑与(a && b)表达了只有a和b的值都为true时,整个表达式的值才会是true。
逻辑或(a || b)它表示了两个逻辑表达式的其中一个为true,整个表达式就为true。
8.三目运算符
三目运算符的格式为:[code]expression? if-true-statement: if-false-statement
如果逻辑表达式expression为真则执行并返回第二个操作数的值; 如果不为真则执行并返回第三个操作数的值。
[code]var a = 5 var b = 3 var str = a > b ? "a大于b" : "a不大于b" // 输出"a大于b" println(str)
9.nil合并运算符
nil合并运算符:??,它的格式如下:[code]a ?? b
简单来说就是如果a为nil,则程序会返回b的值
[code]let dfstr="九阴真经" var str:String? // 输出"九阴真经" print(str ?? dfstr)
相关文章推荐
- 12.Swift 中的关键字详解
- 苹果新的编程语言 Swift 语言进阶(六)--函数和闭包
- swift算法手记-9
- Swift 官方文档地址
- swift学习笔记之-函数
- Swift中使用typealias定义一个闭包closure
- XCGLogger Swift日志打印
- UIColor之扩展Swift
- Swift 教學:如何使用iOS Charts API 製作漂亮的圖表
- swift如何实现语言国际化,适应各国语言
- swift 通知
- swift获取屏幕分辨率
- swift 单例模式正确写法
- oc 调用 swift Demo
- Swift语言指南--可选值
- swift创建一个空项目
- swift 函数 做参数,函数做返回值
- swift构造方法
- Swift_UINavigationController
- swift调用OC语法