Swift笔记:基本运算符
2016-04-12 16:27
148 查看
运算符是检查、改变、合并值的特殊符号或短语。例如,加号(+)将两个数相加(如 let i = 1 + 2)。更复杂的运算例子包括逻辑与运算符 &&(如 if a && b),或让 i 值加 1 的便捷自增运算符 ++i 等。
Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误。如:赋值符(=)不返回值,以防止把想要判断相等运算符(==)的地方写成赋值符导致的错误。算术运算符(+,-,*,/,%等)会检测并不允许值溢出,以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果。当然允许你使用 Swift 的溢出运算符来实现溢出。
区别于 C 语言,在 Swift 中你可以对浮点数进行取余运算(%),Swift 还提供了 C 语言没有的表达两数之间的值的区间运算符,这方便我们表达一个区间内的数值。
运算符分为一元、二元和三元运算符。
一元运算符对单一操作对象操作(如 -a)。一元运算符分前置运算符和后置运算符,前置运算符需紧跟在操作对象之前(如 !b),后置运算符需紧跟在操作对象之后(如 i++)。
二元运算符操作两个操作对象(如 2 + 3),是中置的,因为它们出现在两个操作对象之间。
三元运算符操作三个操作对象,和 C 语言一样,Swift 只有一个三元运算符,就是三目运算符(a ? b : c)。
受运算符影响的值叫操作数,在表达式 1 + 2 中,加号 + 是二元运算符,它的两个操作数是值 1 和 2。
赋值运算符
赋值运算(a = b),表示把b的值赋给a。
如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或变量:
与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值。
算术运算符
Swift 中所有数
b4d4
值类型都支持了基本的四则算术运算:
加法(+)、减法(-)、乘法(*)、除法(/)
与 C 语言和 Objective-C 不同的是,Swift 默认情况下不允许在数值运算中出现溢出情况。但是你可以使用 Swift 的溢出运算符来实现溢出运算(如 a &+ b)。
求余运算符
求余运算(a % b)是计算 b 的多少倍刚刚好可以容入a,返回多出来的那部分(余数)。
浮点数求余计算
不同于 C 语言和 Objective-C,Swift 中是可以对浮点数进行求余的。
自增和自减运算
和 C 语言一样,Swift 也提供了对变量本身加 1 或减 1 的自增(++)和自减(–)的缩略算符。其操作对象可以是整形和浮点型。
需要注意的是这些运算符即可修改了 i 的值也可以返回 i 的值。如果你只想修改 i 的值,那你就可以忽略这个返回值。但如果你想使用返回值,你就需要留意前置和后置操作的返回值是不同的,它们遵循以下原则:
当 ++ 前置的时候,先自増再返回。
当 ++ 后置的时候,先返回再自增。
比较运算符(Comparison Operators)
所有标准 C 语言中的比较运算都可以在 Swift 中使用:
等于(a == b)
不等于(a != b)
大于(a > b)
小于(a < b)
大于等于(a >= b)
小于等于(a <= b)
Swift 也提供恒等(===)和不恒等(!==)这两个比较符来判断两个对象是否引用同一个对象实例。
三目运算符(Ternary Conditional Operator)
三目运算符的特殊在于它是有三个操作数的运算符,它的形式是 问题 ? 答案 1 : 答案 2。它简洁地表达根据 问题成立与否作出二选一的操作。如果 问题 成立,返回 答案 1 的结果;反之返回 答案 2 的结果。
三目运算提供有效率且便捷的方式来表达二选一的选择。需要注意的事,过度使用三目运算符会使简洁的代码变的难懂。
空合运算符(Nil Coalescing Operator)
空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。
逻辑运算(Logical Operators)
逻辑运算的操作对象是逻辑布尔值。Swift 支持基于 C 语言的三个标准逻辑运算。
逻辑非(!a)
逻辑与(a && b)
逻辑或(a || b)
逻辑非
逻辑非运算(!a)对一个布尔值取反,使得 true 变 false,false 变 true。
逻辑与
逻辑与(a && b)表达了只有 a 和 b 的值都为 true 时,整个表达式的值才会是 true。
逻辑或
逻辑或(a || b)是一个由两个连续的 | 组成的中置运算符。它表示了两个逻辑表达式的其中一个为 true,整个表达式就为 true。
Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误。如:赋值符(=)不返回值,以防止把想要判断相等运算符(==)的地方写成赋值符导致的错误。算术运算符(+,-,*,/,%等)会检测并不允许值溢出,以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果。当然允许你使用 Swift 的溢出运算符来实现溢出。
区别于 C 语言,在 Swift 中你可以对浮点数进行取余运算(%),Swift 还提供了 C 语言没有的表达两数之间的值的区间运算符,这方便我们表达一个区间内的数值。
运算符分为一元、二元和三元运算符。
一元运算符对单一操作对象操作(如 -a)。一元运算符分前置运算符和后置运算符,前置运算符需紧跟在操作对象之前(如 !b),后置运算符需紧跟在操作对象之后(如 i++)。
二元运算符操作两个操作对象(如 2 + 3),是中置的,因为它们出现在两个操作对象之间。
三元运算符操作三个操作对象,和 C 语言一样,Swift 只有一个三元运算符,就是三目运算符(a ? b : c)。
受运算符影响的值叫操作数,在表达式 1 + 2 中,加号 + 是二元运算符,它的两个操作数是值 1 和 2。
赋值运算符
赋值运算(a = b),表示把b的值赋给a。
如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或变量:
let (x, y) = (1, 2) // 现在 x 等于 1,y 等于 2
与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值。
if x = y { // 此句错误, 因为 x = y 并不返回任何值 }
算术运算符
Swift 中所有数
b4d4
值类型都支持了基本的四则算术运算:
加法(+)、减法(-)、乘法(*)、除法(/)
与 C 语言和 Objective-C 不同的是,Swift 默认情况下不允许在数值运算中出现溢出情况。但是你可以使用 Swift 的溢出运算符来实现溢出运算(如 a &+ b)。
求余运算符
求余运算(a % b)是计算 b 的多少倍刚刚好可以容入a,返回多出来的那部分(余数)。
浮点数求余计算
不同于 C 语言和 Objective-C,Swift 中是可以对浮点数进行求余的。
8 % 2.5 // 等于 0.5
自增和自减运算
和 C 语言一样,Swift 也提供了对变量本身加 1 或减 1 的自增(++)和自减(–)的缩略算符。其操作对象可以是整形和浮点型。
需要注意的是这些运算符即可修改了 i 的值也可以返回 i 的值。如果你只想修改 i 的值,那你就可以忽略这个返回值。但如果你想使用返回值,你就需要留意前置和后置操作的返回值是不同的,它们遵循以下原则:
当 ++ 前置的时候,先自増再返回。
当 ++ 后置的时候,先返回再自增。
var a = 0 let b = ++a // a 和 b 现在都是 1 let c = a++ // a 现在 2, 但 c 是 a 自增前的值 1
比较运算符(Comparison Operators)
所有标准 C 语言中的比较运算都可以在 Swift 中使用:
等于(a == b)
不等于(a != b)
大于(a > b)
小于(a < b)
大于等于(a >= b)
小于等于(a <= b)
Swift 也提供恒等(===)和不恒等(!==)这两个比较符来判断两个对象是否引用同一个对象实例。
三目运算符(Ternary Conditional Operator)
三目运算符的特殊在于它是有三个操作数的运算符,它的形式是 问题 ? 答案 1 : 答案 2。它简洁地表达根据 问题成立与否作出二选一的操作。如果 问题 成立,返回 答案 1 的结果;反之返回 答案 2 的结果。
三目运算提供有效率且便捷的方式来表达二选一的选择。需要注意的事,过度使用三目运算符会使简洁的代码变的难懂。
空合运算符(Nil Coalescing Operator)
空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。
逻辑运算(Logical Operators)
逻辑运算的操作对象是逻辑布尔值。Swift 支持基于 C 语言的三个标准逻辑运算。
逻辑非(!a)
逻辑与(a && b)
逻辑或(a || b)
逻辑非
逻辑非运算(!a)对一个布尔值取反,使得 true 变 false,false 变 true。
逻辑与
逻辑与(a && b)表达了只有 a 和 b 的值都为 true 时,整个表达式的值才会是 true。
逻辑或
逻辑或(a || b)是一个由两个连续的 | 组成的中置运算符。它表示了两个逻辑表达式的其中一个为 true,整个表达式就为 true。
相关文章推荐
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- Lua中关系运算符的使用教程
- Lua学习笔记之运算符和表达式
- C#运算符重载用法实例分析
- sql server 2008中的apply运算符使用方法
- C#中38个常用运算符的优先级的划分和理解
- 讲解C++编程中Address-of运算符&的作用及用法
- 详解C++中的成员访问运算符和指针到成员运算符
- C++中的按位与&、按位与或|、按位异或^运算符详解
- 深入解析C++编程中__alignof 与__uuidof运算符的使用
- 深入解析C++编程中范围解析运算符的作用及使用
- C#基础语法:as 运算符使用实例
- 与MSSQL对比学习MYSQL的心得(五)--运算符
- MySQL中的运算符使用实例展示
- 轻松学习C#的运算符
- Ruby的运算符和语句优先级介绍
- C#编程自学之运算符和表达式
- C# 运算符 ?、??、?: 各种问号的用法和说明