基本运算符

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

术语(原文中专门列出来) 什么是一元运算符,二元运算符,三目执行符,这里我就不列了。


赋值执行符 (=)
赋值运算符 (=)(感谢 swift技术交流第一平台(355277)的群友 夕颜(1651150754)
指出错别字 )
var a = 5
let b = 10
a = b   //不解释

重点出现。元组赋值:
let (x, y) = (1, 2)  //x = 1, y = 2 是一样一样的

可是假设把=写在if 里,在Swift中是通只是编译的,以后再也不用操心错把== 写成 =了
if x = y {…}  //这里编译器会提示:Type ‘()’ does not conform to protocol ‘LogicValue’
也就是说编译器并不觉得赋值操作符是个Bool表达式

算术执行符
算术运算符(感谢 swift技术交流第一平台(355277)的群友 夕颜(1651150754)
指出错别字 )
1 + 2
5 - 3
2  *  3
10.0 / 2.5
这些写法和C无异,可是,Swift编译器会检查运算结果是否会溢出, 比方:
var myUInt:UInt = 1
myUInt = myUInt - 2  //编译器会提示: Arithmetic operation ‘1-2’(on type’UInt’) results in an overflow

但有些特殊时候。我们须要它溢出的时候怎么办呢?
Swift提供了,能够溢出的运算符: &-  这个先不细说。在最后的章节里,有讲溢出规则的时候再说吧

运算符+同一时候也支持字符串的连接。如:
“hello, “ + “kitty” //等同于 “hello, kitty"

求余数运算符(%)
9 % 4 的结果是1 //有些语言里求余数运算,用的是mod
这里须要注意的是 假设是负数运算,比方
9 % -4  的结果依旧是1,想要得到正确的结果,非得写成:
-9 % 4 不可
当然,-9 % -4 与 -9 % 4的结果是一样的。执行符后面的符号是被忽略的

另外,在Swift中,浮点数也能够使用 % 来做求余数运算了,这是C和Objective-C里是不能够的
8 % 2.5  //得到结果0.5

自增与自减运算符
跟C语言中的一样,好吧,又会涌现出一大批脑残面试官要用 a++和 ++a来折腾人了
反正在项目中,要是敢拿a++和 ++a来开玩笑写easy混淆代码的人。2话不说,直接开除就对了
(连代码是给人读的。不是给机器读的的道理都不明确。还写什么代码)

一元运算符
没啥能够说的…幼儿园小朋友都知道在 3前面加一个减号,他就是-3了...

复合运算符
又是和C里面一样
var a = 1
a += 2  //a的值是3

比較运算符(返回Bool型)
推断等于  ==
推断不等于 !=
推断大于 >
推断小于 <
推断大于等于 >=
推断小于等于 <=
这些运算符不仅能够用于数值,也能够用于字符串的推断
除此之外。Swift还提供了两个新的比較运算符 === 和 !=== 用于推断两个引用是否指向了同一个对象,这个到类和结构体的章节会有样例

三目运算符(  ? : )
与C语言一样
question ?

answer1 : answer2

等效于
if question {
     answer1
} else {
     answer2
}

范围执行符(这样译我认为不合适,更应该叫自己主动扩展)
.. 与 ...的差别
用数学的方法描写叙述就是:
a..b 等效于 [a, b)  //不含b
a…b 等效于 [a, b]  //含b
我认为这里又是个坑....好不easy把 = 和 ==的问题给干掉了,又来了个..和... 这两个的问题根源有差别吗?!

逻辑运算符
与(&&)
或(||)
非(!)   //神经是不是有问题!!!! 在一个语言中。同一个符号在不同位置有两种意思!!! 究竟是几个意思!!! 看着吧,这里又是2B面试官发挥淫相的时机了

早晚会有人会写出类似这种代码:
let allowedEntry:Bool?

= false

if !allowedEntry! {…}  // 前后都有叹号。究竟是几个意思!!!!再次吐槽一下

至于不给 a && b || c || d && e 加括号表示优先级的人。再次强烈建议开除



swift笔记(二) —— 运算符的更多相关文章

  1. swift 笔记 (二十一) —— 高级运算符

    高级运算符 位运算符 按位取反: ~ 按位与运算:  & 按位或运算:  | 按位异或运算:  ^ 按位左移运算: << 按位右移动算: >> 溢出运算符 自从swif ...

  2. swift 笔记 (二十) —— 泛型

    泛型 泛型是为了解决在针对不同数据类型.而做了同一种功能的操作导致的每一个类型我们都要写一份代码的问题. 有了泛型,我们能够仅仅写一份逻辑代码,而适应于不同的数据类型. func swapInt(in ...

  3. 初学swift笔记运算符(二)

    swift 中的运算符 import Foundation //字符类型 var char: Character = "a" char="b" println( ...

  4. swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)

    swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和 ...

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

    李洪强iOS开发Swift篇—04_运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运 ...

  6. 学习笔记(二)---&gt;《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记

    注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...

  7. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  8. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

  9. Mastering Web Application Development with AngularJS 读书笔记(二)

    第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...

随机推荐

  1. Appium+Robotframework实现Android应用的自动化测试-1:Appium在Windows中的安装

    让我们开始在Windows中开始安装Appium吧,Appium在OS X中的具体安装后面的文章会介绍. 另外,官网上说先要装Node.js,还要装Apache Ant和Apache Maven,Gi ...

  2. C# 6.0那些事

    这两天期中考试没时间去看Connect();直播,挺可惜的,考完后补看了Connect(); 把C#6.0的新东西总结一下. 自动属性初始化 (Initializers for auto-proper ...

  3. IIS 浏览aspx页面出现 无法显示 XML 页

    问题: 无法显示 XML 页. 使用 XSL 样式表无法查看 XML 输入.请更正错误然后单击 刷新按钮,或以后重试. 名称以无效字符开头.处理资源 'http://192.168.1.254:808 ...

  4. div里面的内容超出自身高度时,显示省略号

    1.给DIV设置属性:width: 200px; text-overflow: ellipsis; overflow: hidden; 当div里面的内容总宽度找过 200PX的时候,超出的部分会以“ ...

  5. shell中对于命令的搜寻顺序

    当你在shell命令行输入一条命令时,shell的搜寻顺序是如何的呢?当你的脚本名字和shell中的函数名字重名,shell是如何决定运行哪一个的? 在shell中,shell对于命令的搜寻优先级为: ...

  6. R教程计划

    提起数据挖掘,似乎会有很多人望而却步,从生产规划到到规律分析,从生物医学到航天科技,到处都有数据挖掘工程师留下的影子. 通过对比SAS,SPSS,以及R,最终选定了R, 不为什么,免费且高效才是硬道理 ...

  7. QT中的qmake详解

    关于qmake,好一段时间令我一头雾水,不知道用来干嘛的,只知道怎么用,而且也只懂那么一两个命令,详细看过资料以后整理如下: 1.首先,感性的认识是,qmake可以利用源文件(包括头文件h,实现文件c ...

  8. ConcurrentHashMap完全解析(jdk6/7,8)

    并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap ...

  9. 主机性能监控之wmi 获取系统信息及内存性能信息

    标 题: 主机性能监控之wmi 获取系统信息及内存性能信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990240.html 欢迎转帖 请保持文本完整 ...

  10. rtp rtcp rtsp sip协议了解方法

    vlc有个串流功能 可以流各种推流 方便拉取. 能够方便抓包查看协议. 1.菜单媒体->流 打开对话框 分别可以选择本地文件 关盘文件 网络流 捕获设备做流化处理. 2. 选择 串流->新 ...