学过C语言的小猿们都知道,C语言中有很多的运算符:赋值运算符、算术运算符、逻辑运算符、关系运算符、条件运算符、逗号运算符、位运算符……
运算符在代码中发挥着极其重要的作用,Swift中也有很多的运算符,大部分与C中的运算符相似甚至相同,但也有一些改动和补充,接下来就简单介绍一下这些与 'C' 不同的运算符。
一、赋值运算符
与 'C' 不同:Swift中的赋值表达式没有返回值。
1 var num1 = 3 2 var num2 = 4 3 print(num1 += 3) // 输出结果为 "()",赋值表达式没有返回值
因此,赋值表达式不能作为 判断条件 和 循环条件,否则系统会报错,这也就避免了我们进行相等判断时将 '==' 漏写为 '='。
二、取余运算符
与 'C' 不同:Swift中的运算符可以对浮点数取余。
1 var 余数 = 8 % 2.5 2 print(余数) // 输出结果为 "0.5"
我们可以直接将 2.5 看做整数来进行取余运算,如下图:
三、溢出运算符
认识一下: &+, &-, &*, ...
与 'C' 不同:C语言中好像没有这玩意儿,Swift中没有使用溢出运算符的 运算溢出 会导致程序崩溃。
1 var minValue = UInt8.min // UInt8 类型的最大值 2 var maxValue = UInt8.max // UInt8 类型的最小值 3 4 print(minValue) // 输出结果为 "0" 5 print(maxValue) // 输出结果为 "255" 6 7 //let a1 = maxValue + 1 // 程序执行到该行时崩溃 8 let a2 = maxValue &+ 1 9 print(a2) // 输出结果为 "0" 10 11 //let b1 = minValue - 1 // 程序执行到该行时崩溃 12 let b2 = minValue &- 1 13 print(b2) // 输出结果为 "255"
四、空合并运算符
认识一下: a ?? b
与 'C' 不同:C语言中好像没有这玩意儿,Swift中的 空合并运算符 表示对 a 进行空判断,如果 a包含一个值 就对 a 进行解析,否则将 b 转化为 Optional类型 并返回。
使用条件:
1. a 必须是 Optional类型 的;
2. b的类型 必须与 a存储值的类型 相同。
1 var aStr : String? = "aaa" 2 let bStr = "bbb" 3 var result = aStr ?? bStr 4 print(result) // 输出结果为 "aaa" 5 6 var a : Int? // a = nil 7 let b = 4 8 print(b) // 输出结果为 "4" 9 a = a ?? b 10 print(a) // 输出结果为 "Optional(4)"
五、区间运算符
认识一下: 闭区间运算符:a...b;开区间运算符:a..<b
与 'C' 不同:C语言中好像没有这玩意儿,Swift中的 闭区间运算符(a...b) 相当于 a <= x <= b,开区间运算符(a..<b) 相当于 a <= x < b。
1 var num : Int 2 for i in 0...6 { 3 num = i // 该语句执行7次 4} 5 for i in 0..<6 { 6 num = i // 该语句执行6次 7 }
注:本文所有内容均基于Xcode7.2,如有不准确内容,敬请谅解!(2016-01-17)