Swift -- 3.运算符与表达式
+ 加法运算符
- 减法运算符
* 乘法运算符
/ 除法运算符,如果两个除数都是整数类型,得到的值也是整数类型,并且分母不能为零
如果两个除数其中有一个是浮点类型,那么结果就是浮点类型,分母可以为零,值为正/负无穷大
% 求余运算符 两个操作数都可以是浮点类型,如果整数类型,那么第二个操作数不能为零,如果其中一个为浮点类型,第二个操作数可以为浮点类型,得到的结果为非数 nan ;0 对任何数求余都得0
求余运算的结果正负完全取决于被除数,只要被除数是正数,结果一定是正数
++ 自加运算符 如果在数值左边,先给数值加1再进行其他操作,如果在数值右边,先进行其他操作再给数值加1
var int2 = 5
var int3 = int2++ + 5 //值为10
int2 = 5
var int4 = ++int2 + 5//值为11
-- 自减运算符
自加和自减运算符都只能用于操作变量,常量和操作数值不可以这样用
在swift文件前端写 import Foundation 就可以使用ANSIC标准库中的<math.h>头文件中定义的数学函数来完成复杂的运算
//求a的5次方,并将结果赋值给b
var a = 3.2
var b = pow(a, 5)
//求a的平方根,并将结果赋值给c
var c = sqrt(a)
//计算随机数。返回一个0~10之间的伪随机数
var d = arc4random() % 10
//求1.57的sin函数值:1.57被当成弧度数
var e = sin(1.57)
位运算符:太难了,没有看
扩展后的赋值运算符
x += y ~~~~ x = x + y
x -= y ~~~~ x = x - y
x *= y ~~~~ x = x * y
x /= y ~~~~ x = x / y
x %= y ~~~~ x = x % y
范围运算符
可以很方便的构造一种数据结构
1 闭范围运算符,包括两边的值
var range1 = 2...6
for num in range1
{
print(num)
}
//23456
2 半开范围运算符
let books = ["swift","oc","c","c++"]
for index in 0..<books.count
{
print(index)
}
//0123
=== 恒等于,用来判断两个引用类型的变量是否指向同一个对象,类似的运算符有 !== 不恒等于
var d1 = NSMutableArray()
var d2 = NSMutableArray()
print(d1 === d2)
//false
逻辑运算符
&& 与
& 不短路与
&&在判断一个值为false之后,不会再去看第二个值,而&会去计算第二个值
|| 或
| 不短路或
!非 只需要一个操作数,如果操作数为true,则返回false,如果操作数为false,则返回true
^ 异或 当两个操作数不同时返回true,相同返回false
三目运算符 ?:
var a = 5
var b = 6
var str = a>b ? "yes" : "no"
//str 值为no
nil合并运算符
a ??b
如果a值为nil,程序返回b,如果a不为nil,程序返回a
注意,只有可选类型可以被赋值为nil,所以a一般为可选类型
var stra = "sun"
var name1 : String? = "tang"
print(name1 ?? stra) //tang
var name2 : String?
print(name2 ?? stra) //sun