一、Swift所支持的部分運(yùn)算符
- 賦值運(yùn)算符:=
- 復(fù)合賦值運(yùn)算符:+=、-=
- 算術(shù)運(yùn)算符:+、-、*、/
- 求余運(yùn)算符:%
- 自增、自減運(yùn)算符:++、--
- 比較運(yùn)算符:==、!=、>、<、>=、<=
- 邏輯運(yùn)算符:&&、||、!
- 三目運(yùn)算符:? :
- 范圍運(yùn)算符:..< 、 ...
- 溢出運(yùn)算符:&+、&-、&*、&/、&%
二、賦值運(yùn)算符
- 1對(duì)1賦值
var a = 5
let b = 20 - N對(duì)N賦值
let (x, y) = (1, 2)
//x值是1,y值是2,并且都是常量 - 跟C\OC不一樣的是:Swift的賦值運(yùn)算符沒有返回值
if (x = y) { }
上面的代碼是錯(cuò)誤的,因?yàn)閤 = y并沒有返回具體的值
三、求余運(yùn)算符
- %在Swift中叫“求余運(yùn)算符”,或“模運(yùn)算符”
9 % 4 //1
-9 % 4 //-1
9 % -4 //1
-9 % -4 //-1
//求余結(jié)果的下負(fù)跟%左邊數(shù)值的正負(fù)一樣 - 跟C語言不一樣的是,Swift支持浮點(diǎn)數(shù)的計(jì)算
8 % 2.5 //0.5
四、范圍運(yùn)算符
- 范圍運(yùn)算符用來表示一個(gè)范圍,有2種類型的范圍運(yùn)算符
閉合范圍運(yùn)算符: a...b 表示[a, b],包含a和b
半閉合范圍運(yùn)算符:a..<b 表示[a, b),包含a,不包含b
五、溢出運(yùn)算符
第種數(shù)據(jù)類型都有自己的取值范圍,默認(rèn)情況下,一旦賦了一個(gè)超出取值范圍的數(shù)值,會(huì)產(chǎn)生編譯或運(yùn)行時(shí)錯(cuò)誤
下面的寫法是錯(cuò)誤的:
let x = UInt8.max
let y = x + 1 //運(yùn)行時(shí)報(bào)錯(cuò)Swift為整型計(jì)算提供了5個(gè)&開頭的運(yùn)算符,能對(duì)超出取值范圍的數(shù)值進(jìn)行靈活處理
-
值的上溢出
let x = UInt8.max //x的值是255(最大值)
let y = x &+ 1 //y的值是0 (最小值)
-
值的下溢出
let x = UInt8.min //x的值是0(最小值)
let y = x &- 1 //y的值是255 (最大值)
有符號(hào)整數(shù)也有類似的溢出現(xiàn)象
let x = Int8.min //x的值是-128(最小值)
let y = x &- 1 //y的值是127(最大值)除零溢出
默認(rèn)情況下,一個(gè)數(shù)除以0,或者對(duì)0求余數(shù),編譯器直接報(bào)錯(cuò)
let x = 10
let y = x / 0 //報(bào)錯(cuò)
let z = x % 0 //報(bào)錯(cuò)
如果使用溢出運(yùn)算符,就不會(huì)報(bào)錯(cuò)
let x = 10
let y = x &/ 0 //y的值是0
let z = x &% 0 //z的值是0