运算符是检查, 改变, 合并值的特殊符号或短语. 例如, 加号 + 把计算两个数的和(如 let i = 1 + 2). 复杂些的运行算包括逻辑与&&(如 if enteredDoorCode && passedRetinaScan), 还有自增运算符 ++i 这样让自身加一的便捷运算.

Swift支持大部分标准C语言的运算符, 且改进许多特性来减少常规编码错误. 如, 赋值符 = 不返回值, 以防止错把等号 == 写成赋值号 = 而导致Bug. 数值运算符( + , -, *, /, %等)会检测并不允许值溢出, 以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果. 当然允许你选择使用Swift的溢出运算符来玩溢出. 具体使用请移步溢出运算符.
 
区别于C语言, 在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 =
var a =
a = b
// a 现在等于 10

如果赋值的右边是一个多元组, 它的元素可以马上被分解多个变量或变量

 let (x, y) = (, )
// 现在 x 等于 1, y 等于 2

与C语言和Objective-C不同, Swift的赋值操作并不返回任何值. 所以以下代码是错误的:

 if x = y {
// 此句错误, 因为 x = y 并不返回任何值
}
这个特性使得你无法把==错写成=了, 由于if x = y是错误代码, Swift从底层帮你避免了这些代码错误.
 
数值运算
Swift让所有数值类型都支持了基本的四则运算:
 
加法 +
减法 -
乘法 *
除法 /
  +        // 等于 3
- // 等于 2
* // 等于 6
10.0 / 2.5 // 等于 4.0

与C语言和Objective-C不同的是, Swift默认不允许在数值运算中出现溢出情况. 但你可以使用Swift的溢出运算符来达到你有目的的溢出, (如 a &+ b ). 详情请移步: 溢出运算符.

加法操作 + 也用于字符串的拼接: 
 "hello, " + "world"  // 等于 "hello, world" 
两个字符类型或一个字符类型和一个字符串类型, 相加会生成一个新的字符串类型: 
 let dog: Character = "												

The Swift Programming Language-官方教程精译Swift(3)基本运算符的更多相关文章

  1. The Swift Programming Language-官方教程精译Swift(1)小试牛刀

    通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实现:  println("hello, world") 如果你 ...

  2. The Swift Programming Language-官方教程精译Swift(9) 枚举-- --Enumerations

    枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值.   如果你熟悉 C 语言,你就会知道,在 C 语言中枚举指定相关名称为一组整型值.Swift 中的枚举更加灵活 ...

  3. The Swift Programming Language-官方教程精译Swift(8)闭包 -- Closures

    闭包是功能性自包含模块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其他一些编程语言中的 lambdas 比较相似. 闭包可以捕获和存储其 ...

  4. The Swift Programming Language-官方教程精译Swift(7)函数 -- Functions

    函数 函数是执行特定任务的代码自包含块.通过给定一个函数名称标识它是什么,并在需要的时候使用该名称来调用函数以执行任务. Swift的统一的功能语法足够灵活的,可表达任何东西,无论是不带参数名称的简单 ...

  5. The Swift Programming Language-官方教程精译Swift(6)控制流--Control Flow

    Swift提供了类似C语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行不同代码分支的if和switch语句,还有控制流程跳转到其他代码的break和continu ...

  6. The Swift Programming Language-官方教程精译Swift(5)集合类型 -- Collection Types

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

  7. The Swift Programming Language-官方教程精译Swift(4)字符串和字符

    String 是一个有序的字符集合,例如 "hello, world", "albatross".Swift 字符串通过 String 类型来表示,也可以表示为 ...

  8. The Swift Programming Language-官方教程精译Swift(2)基础知识

    Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型:Double和Float是浮点型:Bool是布尔型:String是字符串.Swift 还有两个有用的集合类型,Ar ...

  9. 一群牛人翻译:The Swift Programming Language 中文版

    无聊闲逛GIthub,看到一群牛人在github上创建了一个关于Switf的文档翻译项目 The Swift Programming Language 中文版 项目地址:中文版 Apple 官方 Sw ...

随机推荐

  1. Matlab学习------------带有右键菜单的GUI学习实例

    实例步骤: 须要设置UIContextMenu,否则点击右键不显示. 右键点击第一个菜单之后:(在菜单中加入对应的回调函数) function r1_Callback(hObject, eventda ...

  2. mac提升yosemite后php 扩展修复

    mac升级之后 php 正积极提升自己,导致php环境破坏 所以 例如有以下几点需要修复 1. sudo ln -s /Applications/Xcode.app/Contents/Develope ...

  3. 谈话节目APE系列:如何成为技术达人

    作为一个程序猿,总有消退的前辈.或更年轻的同行.牛逼的人总是羡慕. 让我们搞自己痛苦的日子 BUG .头发很快结束了抓,人们扫两.修改一行代码.问题得以克服:例如,他们自己开发的十年,少付 10K , ...

  4. LINQ之路系列文章导读

    本系列文章将会分为3篇来进行阐述,如下: LINQ之路(1):LINQ基础 LINQ之路(2):LINQ to SQL本质 LINQ之路(3):LINQ扩展

  5. Linux 的 Shell

    一个:Shell 概念 shell 这个词是不奇怪,意思是 "壳" 这是间OS 用户和芯层之间的相互作用,在linux系统.用户可以通过命令终端.使用shell 命令向下传达他们的 ...

  6. POJ2195 Going Home 【最小费用流】+【最佳匹配图二部】

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18169   Accepted: 9268 Descr ...

  7. ITIL该研究的结论(互联网思维的结合)

    大约ITIL该研究的结论 最近,该公司与组织学习在一起ITIlV3一个Foundation知识. 学了几周了,每周两次课,是上海的同事在share她的理解. 事实上最開始,我个人差点儿没有听过ITIL ...

  8. Android特效 五种Toast具体解释

    Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,并且Toast显示的时间有限,过一定的时间就会自己主动消失. 1.默认效果: 代码: Toas ...

  9. Advanced Installer 制作.NetWeb部署安装包

    原文:Advanced Installer 制作.NetWeb部署安装包 因为是.Net的Web应用程序,所以想用Advanced Installer 调用Dll实现安装部署. 因为我需要自己定制参数 ...

  10. 【翻译】在Ext JS 5应用程序中怎样使用路由

    原文:How to Use Routing in Your Ext JS 5 Apps 简单介绍 Ext JS 5是一个重要的公布版本号,它提供了很多新特性来创建丰富的.企业级的Web应用程序.MVV ...