操作员正在检查,更改。归并值特殊符号或短语。例如,加+这两个数字相加(例如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声明。请参阅控制流。

Swift编程语言学习2.1——基础运营商(在)的更多相关文章

  1. Swift编程语言学习9—— 存储属性和计算属性

    属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性能够用于类.结构体和枚举里,存储属性仅仅能用于类和结构体. 存储属性和计算属性通经 ...

  2. Swift 编程语言学习0.1——Swift简单介绍

    有的时候,认为看英文文档有些费时,看中文文档怕翻译不准,有些地方确实不须要抠字眼.当有些地方假设翻译不精准会产生歧义,所以用这样对比的方式.顺便学习一下Swift. Swift is a new pr ...

  3. Swift编程语言学习4.1——周期

    Swift它提供了类似 C 流量控制结构语言,它包含运行多个任务的能力for和while周期.选择根据不同的编码分支机构的具体条件来运行if和switch声明,有控制流程跳转到其他代码break和co ...

  4. Swift编程语言学习6—— 闭包

    闭包是自包括的函数代码块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其它一些编程语言中的 lambdas 函数比較类似.   闭 ...

  5. Swift编程语言学习4.3—— 控制语句

    控制传递语句(Control Transfer Statements) 控制转移语句改变你代码的运行顺序,通过它你能够实现代码的跳转.Swift有四种控制转移语句. continue break fa ...

  6. Swift编程语言学习11—— 枚举全局变量、局部变量与类型属性

    全局变量和局部变量 计算属性和属性监视器所描写叙述的模式也能够用于全局变量和局部变量,全局变量是在函数.方法.闭包或不论什么类型之外定义的变量,局部变量是在函数.方法或闭包内部定义的变量. 前面章节提 ...

  7. Swift编程语言学习1.4——数值型字面量、数值类型转换

    数值型字面量 整数字面量能够被写作: 一个十进制数,没有前缀 一个二进制数,前缀是0b 一个八进制数,前缀是0o 一个十六进制数,前缀是0x 以下的全部整数字面量的十进制值都是17: let deci ...

  8. Swift编程语言学习3.1排列

    Swift 语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储同样类型的数据.字典尽管无序存储同样类型数据值可是须要由独有的标识符引用和寻址(就是键值对). Swift 语言里的数 ...

  9. Swift编程语言学习1.3——类型安全和投机型

    Swift 是类型安全(type safe )语言.类型安全的语言可以让你清楚地知道代码被处理值类型.假设你需要一个代码String.你绝对不能进去一个不小心传球Int. 因为 Swift 它是类型安 ...

随机推荐

  1. eclipse自动生成的appcompat_v7出错

    用eclipse新建Android工程时,自动生成的appcompat_v7出错,有个红色交叉,而且新建的Android工程有一个红色感叹号. 这时你去看看你新建的Android工程是不是没有生成R文 ...

  2. URAL 1081 Binary Lexicographic Sequence

    第13个位置第5个Bit :13>num[4] =>1 第四个bit 13-num[4]=5 :5<num[3] =>0 ,3-1 第三个Bit 5>num[2](3) ...

  3. BZOJ 2561: 最小生成树(最小割)

    U,V能在最小(大)生成树上,当且仅当权值比它小(大)的边无法连通U,V. 两次最小割就OK了. --------------------------------------------------- ...

  4. nodebeginer

    最近对node开始感兴趣,知乎上朴灵推荐入门书籍,goddy翻译的node beginner. 貌似大家对深入浅出node.js评价都不错,以后可以考虑入手看看. 一口气看完了node beginne ...

  5. Oracle的大数据类型,BIG DATA TYPE

    1.CLOB 字符LOB类型,主要用于存储大型英文字符 2.NCLOB 国际语言字符LOB类型,主要用于存储大型非英文字符 3.BLOB 二进制LOB类型,主要用于存储二进制数据 4.BFILE 二进 ...

  6. JS笔记 入门第一

    WHY? 一.你知道,为什么JavaScript非常值得我们学习吗? 1. 所有主流浏览器都支持JavaScript. 2. 目前,全世界大部分网页都使用JavaScript. 3. 它可以让网页呈现 ...

  7. Unit Tests Tool - <What is “Mock You”> The introduction to moq #Reprinted#

    From: http://www.cnblogs.com/wJiang/archive/2010/02/21/1670632.html Moq即Mock You Framework,故名思意是一个类似 ...

  8. Aone新拉分支

    1.进入Aone新建项目 2.测试人员填huyangjun和husong 3.进入后拉分支 4.弄个日常普通环境 5.吧环境跑起,绑定Host就可以

  9. Teclast/台电 P98HD四核测评9.7寸台电P98HD 评测体验 (转载)

    自从苹果新iPad上市推出后,拥有Retina高清屏幕分辨率的平板让我们的视线一下子变得“清晰”起来,超高2048x1536分辨率也成为厂商们追捧的对象,在经历了双核时代配备高清分辨率对于硬件性能承载 ...

  10. HTTP使用BASIC认证的原理及实现方法 (转载)

    转自:http://blog.itpub.net/23071790/viewspace-709367 一.   BASIC认证概述 在HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许 ...