Swift的基本运算符

  今天学习了Swift语言的最基本的知识,以下是本人的一些认识与小结,希望能帮助更多人的区理解,如有不妥的地方望大家指出,以便及时更正。

  

  基本运算符

  运算符是一种特殊的符号或短语,你可以用它来检查,改变,或组合值。

  运算符都是一元,二元或者三元:

  • 一元运算符操作单个对象主要有:前缀操作符 (如 -a,!a)和后缀操作符在对象后出现 (如 i++,i--)。
  • 二元运算符操作两个对象且在两对象之间,主要有:-,+,*,/,%,<,>,=。(如 a-b, a+b, a*b, a/b, a%b, a<b, a>b, a=b)
  • 三元运算符对两个对象进行操作,与C语言一样,Swift也只支持一个三元运算符:三元条件操作符 (a ? b : c).

  赋值运算符

  赋值运算符 (a=b) 用 b 的值去初始化或更新a的值

 let b =2
 var a = 3
 a= b
//此时a的值等于b的值都是2

  假如右边赋值的数据为多个数据的元组,它的元素可以是一次性赋给的多个常量或变量 

let (a, b) = (1, 2)
// a等于1, b等于2

  与C及Objective-C不同,Swift中赋值运算符并不将自身作为一个值进行返回。所以以下的代码是不合法的:

if x = y {
// 错误, 因为x = y并不会返回一个值
}

 数学运算符

  Swift支持所有数字类型的四个标注运算符:

  例如:

1 + 2 // equals 3
5 - 3 // equals 2
2 * 3 // equals 6
10.0 / 2.5 // equals 4.0

  不同于C和Objective-C,默认情况下Swift的算术运算符不允许值溢出。加法运算符对字符串连接也一样适用,例如:

"hello, " + "world" // equals "hello, world"

  两个字符,或者一个字符一个字符串,能组合成一个新的字符串:

let dog: Character = "dog"
let cow: Character = "cow"
let dogCow = dog + cow
// dogCow is equal to "dogcow"

  取余运算符

  取余运算符%是指在除数除以被除数时余下的数,如(3%2的余数就是1)

let a = 5
let b = 3
let c = a%b
//这时c的值是2

  同一个方法中如果a的值是-5那么取余运算后c的值就是-2,如果b的值是-3则c的值会是2,也就是说取余运算的符号不受被除数b的影响,只受除数a的影响

  浮点余数计算

  不同于C与OC的是Swift的取余运算同样可以运用于浮点数:

let a = 8
let b = 2.5
let c = a%b
//那么现在的c的值是0.5

  自增自减运算符

  和C一样Swift提供了自增(++),自减(--)两个运算符,其增减量为1,可以对任何的整点或浮点类型的变量使用。如

var a = 0
++a    //这时a的值是1
--a      //这时a的值是0

  这里需要注意的是当运算需要返回值的时候,自增自减运算符所放的位置的不同对运算的结果也是不一样的:

var a = 0
let b = ++a      //a和b的值都为1
let c = a++     //这时a的值是2  c的值是1
let d = --a       //这时d的值是1  a的值也是1
let e = a--       //这时e的值是1  a的值是0

  复合赋值操作符

  Swift提供了和C语言一样的复合复制操作符,就是说把赋值和另外一种运算符结合起来。如(+=),(-=):

var a = 1
a += 2     //这时a的值为3
a -= 3      //这时a的值为0

  加法赋值操作符的原型是  a = a + 2,之所以写成(+=)是因为这样写能够有效地把加法和赋值组合到一个运算,同时执行这两个任务。

  需要注意的是:复合复制操作符不返回值。例如这样写就是不对的    let a = +=1。

  

  比较运算符

  Swift支持所有C的比较运算符。

  • 大于(a>b)
  • 小于 (a<b)
  • 大于等于 (a >= b)
  • 小于等于 (a <= b)
  • 等于  (a = b)
  • 不等于 (a != b)

    let a = 5
    let b = 6
    let c = 5
    a>b        //返回false
    c<b        //返回true
    a>=c     //返回true
    a<=c     //返回true
    a == c   //返回true
    a != b    //返回true

    这种比较运算符通常都用在条件语句中,比如if语句 

    let a = "chk"
    if a == "chk"{
        println("hello, chk")
    }
    else{
        println("not chk")
    }
    //输出的结果是 hello, chk

    关于if语句我们以后再详细研究

  范围运算符

  Swift提供了两种形式的范围运算符

  1、封闭范围运算符

    封闭范围运算符(a...b)定义了一个范围,从a到b,并包括了a和b的值。一般用于for -in 循环语句中

for i in 0...5{
    println("第 \(i) 次")
}

//第 0 次
//第 1 次
//第 2 次
//第 3 次
//第 4 次

   关于for -in语句我们以后再深入研究。  

  2、半封闭的区域运算符

          半封闭的区域运算符(a..b)定义了从a到b的范围,但不包括b。它被认为是半封闭的,因为它包含第一个值,而不包含最终值。

    半封闭的范围使用明确,当你使用从零开始的列表,如数组,它是有用的数到(但不包括)列表的长度:

let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..count {
println("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack

  请注意,该数组包含四个项目,但0 . .数只数到3(数组中的最后一个项目的索引),因为它是一个半封闭的范围。有关数组的信息,我们以后深入研究。

  三元运算符

  Swift跟C语言一样也支持三元运算,三元运算也属于条运算,主要形式是 a?b:c 其表达的意思是判断a的值,若a的值返回true则表达式返回b的值,若a的值返回false则返回c的值。下面我们用代码比较下三元运算符的优势:

let a = true
let b = a?2:3
//这时b的值是2

  上边的表达式也可以这样写

let a = true
if a {
    reture 2
}
else{
    reture 3
}
//结果是2

  很明显使用三元运算符更简洁,更方便。不过需要注意的是为了保证代码的可读性,最好不要使用多个实例的三元条件运算符组合成一个复合语句。

  逻辑与运算符

  Swift支持这三个标准逻辑运算符基于C语言,通常用在条件语句中:

  • not (!a)
  • and (a&&b)
  • or  (a || b)

  逻辑非运算符(!a)表达的意思为不是什么成立则返回true,不成立则返回false

let a = true
if !a {
    println("条件成立")
}
else{
    println("条件不成立")
}
//输出结果是  条件不成立
//因为a本身是正确地,而逻辑非运算符说a不是正确地,所以不成立返回false

  逻辑与运算符(A&&B)表达的意思为A,B两个值都必须是true才返回true,否则A,B中有一个是false就返回false

let A = true
let B = false
if A && B {
    println("条件成立返回true")
}
else{
    println("条件不成立返回false")
}
//输出结果是  条件不成立返回false

  逻辑或运算符(A || B)表示A和B其中有一个是true则返回true,如果A,B都是false则结果返回false

let A = true
let B = false
if A || B {
    println("条件成立返回true")
}
else{
    println("条件不成立返回false")
}
//打印结果是    条件成立返回true

  在这里值得一提的是不管是逻辑与运算符还是逻辑或运算符都用到了短路条件判断法,比如说逻辑与运算符(&&)必需是两个值都为true时才成立,那么当左边的值是false的时候,条件不成立,就不需要再判断运算符右边的值了。逻辑或运算符(||)也是同样的道理,逻辑或运算符(||)是只要有一个值是true就成立,那么当判断左边的值是true时,则条件是成立的,就不用再判断运算符右边的值了。

  复合逻辑表达式

  符合逻辑表达式是将多个逻辑运算符复合后创建更长的复合表达式:

let a = true
let b = false
let c = true
if !a || c && b {
    println("条件成立")
}
else {
    println("条件不成立")
}
//输出结果是条件不成立

  像这种复合逻辑表达式的判读一般都是从左到右根据逻辑运算符的优先级依次进行判断,(!,&&,||)这三个运算符的优先级是一样的,只需要牢记逻辑与运算符(&&)两者都必须是true才成立,逻辑或运算符(||)两者有一个是true则成立,如此即可正确解析整个复合表达式,一定要透过现象看本质。

  明确地括号

  这个就比较好理解了,在复合逻辑表达式中我们可以添加()使逻辑意图更加明确,比如在上段代码中我们加入()

let a = true
let b = false
let c = true
if !a || ( c && b ) {
    println("条件成立")
}
else {
    println("条件不成立")
}
//输出结果是条件不成立

  在符合逻辑表达式中我们可以把几个值放在一个单独的逻辑运算中去判断出结果,然后根据()内判断的结果再与前面或后面的值进行判断,最后得出最终结果

  

  

时间: 2024-10-03 15:48:19

Swift的基本运算符的相关文章

李洪强iOS开发Swift篇—04_运算符

李洪强iOS开发Swift篇—04_运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运算符:++.-- 比较运算符:==.!=.>.<.>=.<= 逻辑运算符:&&.||.! 三目运算符:? : 范围运算符:..< .... 溢出运算符:&+.&-.&*.&/.&% 2.赋值运算符 (1)1对1赋值 var

Swift教程之运算符重载

原文地址:http://www.raywenderlich.com/80818/operator-overloading-in-swift-tutorial 作者:Corinne Krych  译者:孟祥月 blog:http://blog.csdn.net/mengxiangyue 这篇文章是本人第一次翻译,难免有错误,翻译的时候使用的是txt,所以格式上面有些不太好. 在早前的IOS 8盛宴系列的教程里,你已经了解到,Swift提供了许多强大的.现代的编程特性,比如泛型.函数式编程.一等类型

Swift数据类型、运算符、新增语句等小结

总结复习一些基本的东西,主要是与OC不同的以及新增的. 一.基本数据类型 Int.Float.Double.Bool.Character.String(首字母都大写) Array.Dictionary.元组类型(Tuple).可选类型(Optional) 指定数据类型: [javascript] view plaincopy let a:Int = 10  //指定数据类型. 一般不需要指定,会自动判断类型. (使用时需初始化) 1.1 整形 [javascript] view plaincop

【iOS】Swift数据类型、运算符、新增语句等小结

总结复习一些基本的东西,主要是与OC不同的以及新增的. 一.基本数据类型 Int.Float.Double.Bool.Character.String(首字母都大写) Array.Dictionary.元组类型(Tuple).可选类型(Optional) 指定数据类型: let a:Int = 10 //指定数据类型. 一般不需要指定,会自动判断类型. (使用时需初始化) 1.1 整形 //1.1整形 let maxInt = Int.max //获取Int类型的最大值 let minInt =

swift笔记(二) —— 运算符

基本运算符 Swift支持大部分的标准C语言的操作符,而且做了一些改进,以帮助开发人员少犯低级错误,比方: 本该使用==的时候,少写了个=, if x == y {-} 写成了 if x = y {-} 你就悲剧了 在使用 +,-,*,/ 的时候,得到的结果溢出了.你还是悲剧了.要做非常多检查保证不溢出才行 然而,在Swift中,我们再也不用操心这些问题了.编译器会帮我们搞定的 Swift还提供了两个C语言中没有的二元操作符 .. 和 - 接下来,我们就来看看Swift中的使用方法 术语(原文中

swift 初见-4运算符与字符串操作

// Playground - noun: a place where people can play import UIKit //import Foundation var str = "Hello, playground" //swift 新运算符 Nil Coalescing Operator (nil聚合运算符) 二元运算符 它是为可选型数据来设计的,通常用在解包的过程中 // 示例: a??b ---> a!=nil? a! : b (a不为空就解包,否则返回默认值b

Swift(三)基本运算符

Swift支持大部分标准C语言的运算符,并且对许多特性进行改进来减少常规编码的错误.除了支持基本运算符外,Swift还提供了2个特殊的运算符,分别是:溢出运算符和区间运算符 首先看下基本运算符 import UIKit var str = "Hello, playground" /** 赋值运算符 1. 注意??:与C语言和OC不同,Swift的赋值操作并不返回任何值. 这个特性是你无法把(==)错写成 (=) */ let b = 10 var a = b //if a = b {

Swift教程之运算符

import Foundation //4.复合赋值操作符 var a = 1 a += 2 //一元减运算符(一个数值前加了符号-,叫作一元减运算符) let three = 3 let minusThree = -three //minusThree = -3 let plusThree = -minusThree // plusThree = 3 //一元加运算符(一元加运算符(+)返回的值,不做任何变动) let minusSix = 6 let alsoMinusSix = +minu

Swift - 12 - 区间运算符和for-in

//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground" var a = 1, b = 10 // a到b(包含a,b) [a,b] a...b // a到b-1(包含a,不包含b) [a,b) a..<b // for-in循环 for index in a..<b { // index为常量 index } var array = [&q