天天看點

swift-運算符

一.算術運算符

  • + - * / % ++ --

  • 除了取模,其它和OC一樣,包括優先級
var result =  + 
result =  * 
result =  - 
result =  / 
print(result) 
           
  • 注意: Swift是安全嚴格的程式設計語言, 會在編譯時候檢查是否溢出, 但是隻會檢查字面量而不會檢查變量, 是以在Swift中一定要注意隐式溢出, 遇到這種問題可以利用溢出運算符解決該問題:

    http://www.yiibai.com/swift/overflow_operators.html

溢出加法 &+
溢出減法 &-
溢出乘法 &*
溢出除法 &/
溢出求餘 &%
           
  • 取模 %
    • OC: 隻能對整數取模
    • Swift: 支援小數取模
// NSLog(@"%d",  % 3);
print( % 3.5)
           

二.自增 自減

  • ++i

    i++

    這樣的格式将在swift 3.0 中取消, 是以不推薦寫成

    ++i

    i++

    這樣的形式, 如果這樣寫編譯器會報警告提示, 推薦寫成

    i += 1

var number = 
number++  
print(number)number--
print(number)
           

三. 指派運算

  • 基本用法和OC一樣
var num1 = 10
num1 = 20
num1 += 10
num1 -= 10
num1 /= 10
num1 *= 10
num1 %= 5
print(num1)
           
  • 唯一要注意 的是表達式的值
    • OC: 表達式的結合方向是從左至右, 整個表達式的值整體的值等于最後一個變量的值, 簡而言之就是連續指派
    • Swift: 不允許連續指派, Swift中的整個表達式是沒有值的.
    • Swift不能連續指派主要是為了避免 if (c == 9)

      這種情況誤寫為 if (c = 9) , c = 9是一個表達式,表達式是沒有值的, 是以在Swift中if (c = 9)不成立

// oc寫法為:
int num1;
int num2;    
num2 = num1 = ;
NSLog(@"%d",num2);
           
//下面這個寫法是在swift當中不允許的
var num1:Int
var num2:Int
num2 = num1 =  // 這樣寫法直接報錯
           

四.關系運算符

  • > < >= <= == != ?:

  • 關系運算符, 得出的值是Bool值, 基本用法和OC一樣
var result1:Bool =  > 
var result2 =  >  ?  : 
print(result2)
           

五.邏輯運算符

  • C語言和OC并沒有真正的Bool類型
  • C語言的Bool類型非0即真
  • OC語言的Bool類型是typedef signed char BOOL;
  • Swift引入了真正的Bool類型
  • Bool true false
  • Swift中if的條件隻能是一個Bool的值或者是傳回值是Bool類型的表達式
  • OC中if可以是任何整數(非0即真),
  • 但是存在的問題是可能将判斷寫錯, 寫成了指派 if(isOpen = 2)
  • 在開發中為了避免這個問題
  • 有經驗的程式員會這樣寫 if(2 == isOpen)來避免這個問題.
  • 在Swift中很好的解決了這個問題
  • 邏輯運算符在swift當中隻能操作Bool類型資料
  • 在OC當中是非0即真. 可以操作整形
  • 在swift當中不允許這種操作.其它基本和OC一緻
var open = falseif !open{    
    print("打開")
}

var age = 
var height = 
var wage  = 
if (age >  && age <  && height > ) || wage > {
    print("約約約")
}
           

六.區間

  • 閉區間: 包含區間内所有值 a…b 例如: 1…5, 數學區間表示 [1, 5]
  • 半閉區間: 包含頭不包含尾 a..
for i in .{    
    print(i)
}

for i in .<{    
    print(i)
}