Swift编程语言学习2.1——基础运营商(在)
操作員正在檢查,更改。歸并值特殊符號或短語。例如,加+這兩個數字相加(例如let i = 1 + 2)。
算如更復雜的邏輯和操作的實施&&(例如if enteredDoorCode && passedRetinaScan),又或讓 i 值加1的便捷運算符自增運算符++i等。
Swift 支持大部分標準 C 語言的運算符,且改進很多特性來降低常規編碼錯誤。如,賦值符(=)不返回值。以防止把想要推斷相等運算符(==)的地方寫成賦值符導致的錯誤。
數值運算符(+,-,*。/,%等)會檢測并不同意值溢出,以此來避免保存變量時因為變量大于或小于其類型所能承載的范圍時導致的異常結果。
當然同意你使用 Swift 的溢出運算符來實現溢出。詳情參見溢出運算符。
差別于 C 語言。在 Swift 中你能夠對浮點數進行取余運算(%),Swift 還提供了 C 語言沒有的表達兩數之間的值的區間運算符,(a..b和a...b),這方便我們表達一個區間內的數值。
本章節僅僅描寫敘述了 Swift 中的基本運算符,高級運算符包括了高級運算符,及怎樣自己定義運算符,及怎樣進行自己定義類型的運算符重載。
術語
運算符有一元,二元和三元運算符。
?
一元運算符對單一操作對象操作(如-a)。
一元運算符分前置符和后置運算符,前置運算符需緊排操作對象之前(如!b),后置運算符需緊跟操作對象之后(如i++)。
二元運算符操作兩個操作對象(如2 + 3),是中置的,由于它們出如今兩個操作對象之間。
三元運算符操作三個操作對象,和 C 語言一樣,Swift 僅僅有一個三元運算符,就是三元條件運算符(a ?
b : c)。
受運算符影響的值叫操作數。在表達式1 + 2中,加號+是二元運算符。它的兩個操作數是值1和2。
?
?
賦值運算符
賦值運算(a = b)。表示用b的值來初始化或更新a的值:
?
let b = 10 var a = 5 a = b // a 如今等于 10假設賦值的右邊是一個多元組,它的元素能夠立即被分解多個變量或變量:
?
let (x, y) = (1, 2) // 如今 x 等于 1, y 等于 2與 C 語言和 Objective-C 不同,Swift 的賦值操作并不返回不論什么值。
所以下面代碼是錯誤的:
?
let (x, y) = (1, 2) // 如今 x 等于 1, y 等于 2這個特性使得你無法把(==)錯寫成(=)了,因為if x = y是錯誤代碼。Swift 從底層幫你避免了這些代碼錯誤。
?
?
數值運算
Swift 讓全部數值類型都支持了主要的四則運算:
?
加法(+)
減法(-)
乘法(*)
除法(/)
1 + 2 // 等于 3 5 - 3 // 等于 2 2 * 3 // 等于 6 10.0 / 2.5 // 等于 4.0與 C 語言和 Objective-C 不同的是,Swift 默認不同意在數值運算中出現溢出情況。但你能夠使用Swift 的溢出運算符來達到你有目的的溢出(如a &+ b)。
詳情參見溢出運算符。
?
加法運算符也用于String的拼接:
?
"hello, " +"world" // 等于"hello, world"兩個Character值或一個String和一個Character值。相加會生成一個新的String值:
?
l
et dog: Character = "d" let cow: Character = "c" let dogCow = dog + cow // dogCow 如今是 "dc"詳情參見字符。字符串的拼接。
?
求余運算
求余運算(a % b)是計算b的多少倍剛剛好能夠容入a,返回多出來的那部分(余數)。
?
注意:
?
求余運算(%)在其它語言也叫取模運算。然而嚴格說來。我們看該運算符對負數的操作結果,"求余"比"取模"更合適些。
我們來談談取余是怎么回事,計算9 % 4,你先計算出4的多少倍會剛好能夠容入9中:
?
2倍,很好,那余數是1
?
在 Swift 中這么來表達:
?
9 % 4 // 等于 1為了得到a % b的結果,%計算了下面等式,并輸出余數作為結果:
?
a = (b × 倍數) + 余數
?
當倍數取最大值的時候。就會剛好能夠容入a中。
?
把9和4代入等式中。我們得1:
?
9 = (4 × 2) + 1
相同的方法。我來們計算 -9 % 4:
?
-9 % 4??// 等于 -1
把-9和4代入等式,-2是取到的最大整數:
?
-9 = (4 × -2) + -1
余數是-1。
?
在對負數b求余時。b的符號會被忽略。這意味著 a % b 和 a % -b的結果是同樣的。
?
浮點數求余計算
不同于 C 語言和 Objective-C,Swift 中是能夠對浮點數進行求余的。
?
8 % 2.5 // 等于 0.5這個樣例中。8除于2.5等于3余0.5,所以結果是一個Double值0.5。
自增和自增運算
和 C 語言一樣,Swift 也提供了方便對變量本身加1或減1的自增(++)和自減(--)的運算符。
其操作對象能夠是整形和浮點型。 ?
?
var i = 0 ++i // 如今 i = 1每調用一次++i,i的值就會加1。實際上,++i是i = i + 1的簡寫,而--i是i = i - 1的簡寫。
?
++和--既是前置又是后置運算。++i,i++,--i和i--都是有效的寫法。
?
我們須要注意的是這些運算符改動了i后有一個返回值。
假設你僅僅想改動i的值。那你就能夠忽略這個返回值。但假設你想使用返回值,你就須要留意前置和后置操作的返回值是不同的。
?
當++前置的時候,先自増再返回。
當++后置的時候。先返回再自增。
比如:
?
var a = 0 let b = ++a // a 和 b 如今都是 1 let c = a++ // a 如今 2, 但 c 是 a 自增前的值 1上述樣例。let b = ++a先把a加1了再返回a的值。所以a和b都是新值1。
?
而let c = a++。是先返回了a的值。然后a才加1。所以c得到了a的舊值1,而a加1后變成2。
?
除非你須要使用i++的特性。不然推薦你使用++i和--i,由于先改動后返回這種行為更符合我們的邏輯。
?
一元負號
數值的正負號能夠使用前綴-(即一元負號)來切換:
?
let three = 3 let minusThree = -three // minusThree 等于 -3 let plusThree = -minusThree // plusThree 等于 3, 或 "負負3"一元負號(-)寫在操作數之前,中間沒有空格。
?
一元正號
一元正號(+)不做不論什么改變地返回操作數的值。
?
let minusSix = -6 let alsoMinusSix = +minusSix // alsoMinusSix 等于 -6盡管一元+做無用功。但當你在使用一元負號來表達負數時,你能夠使用一元正號來表達正數,如此你的代碼會具有對稱美。
?
?
復合賦值(Compound Assignment Operators)
如同強大的 C 語言,Swift 也提供把其它運算符和賦值運算(=)組合的復合賦值運算符,加賦運算(+=)是當中一個樣例:
?
var a = 1 a += 2 // a 如今是 3表達式a += 2是a = a + 2的簡寫。一個加賦運算就把加法和賦值兩件事完畢了。
?
注意:
?
復合賦值運算沒有返回值,let b = a += 2這類代碼是錯誤。
這不同于上面提到的自增和自減運算符。
在表達式章節里有復合運算符的完整列表。 ?
?
比較運算
全部標準 C 語言中的比較運算都能夠在 Swift 中使用。
?
等于(a == b)
不等于(a!= b)
大于(a > b)
小于(a < b)
大于等于(a >= b)
小于等于(a <= b)
注意:
?
Swift 也提供恒等===和不恒等!==這兩個比較符來推斷兩個對象是否引用同一個對象實例。
很多其它細節在類與結構。
每一個比較運算都返回了一個標識表達式是否成立的布爾值:
?
1 == 1 // true, 由于 1 等于 1 2 != 1 // true, 由于 2 不等于 1 2 > 1 // true, 由于 2 大于 1 1 < 2 // true, 由于 1 小于2 1 >= 1 // true, 由于 1 大于等于 1 2 <= 1 // false, 由于 2 并不小于等于 1比較運算多用于條件語句。如if條件:
?
let name = "world" if name == "world" {println("hello, world") } else {println("I'm sorry \(name), but I don't recognize you") } // 出口 "hello,world", 由于 `name` 它等于 "world"左右if聲明。請參閱控制流。
轉載于:https://www.cnblogs.com/hrhguanli/p/4758698.html
總結
以上是生活随笔為你收集整理的Swift编程语言学习2.1——基础运营商(在)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nice和taskset命令
- 下一篇: 数的特殊特点