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值:

let dog: Character = "d"
let cow: Character = "c"
let dogCow = dog + cow
// 译者注: 原来的引號内是非常可爱的小狗和小牛, 但win os下不支持表情字符, 所以改成了普通字符
// dogCow 如今是 "dc"

详情參见字符,字符串的拼接。

求余运算

求余运算(a % b)是计算b的多少倍刚刚好能够容入a,返回多出来的那部分(余数)。

注意:

求余运算(%)在其它语言也叫取模运算。然而严格说来,我们看该运算符对负数的操作结果,"求余"比"取模"更合适些。

我们来谈谈取余是怎么回事,计算9 % 4,你先计算出4的多少倍会刚好能够容入9中:

2倍。很好,那余数是1(用橙色标出)

在 Swift 中这么来表达:

9 % 4    // 等于 1

为了得到a % b的结果,%计算了下面等式。并输出余数作为结果:

a = (b × 倍数) + 余数

倍数取最大值的时候。就会刚好能够容入a中。

94代入等式中,我们得1

9 = (4 × 2) + 1

相同的方法。我来们计算 -9 % 4

-9 % 4   // 等于 -1

-94代入等式。-2是取到的最大整数:

-9 = (4 × -2) + -1

余数是-1

在对负数b求余时,b的符号会被忽略。

这意味着 a % b 和 a % -b的结果是同样的。

浮点数求余计算

不同于 C 语言和 Objective-C,Swift 中是能够对浮点数进行求余的。

8 % 2.5 // 等于 0.5

这个样例中,8除于2.5等于30.5。所以结果是一个Double0.5

自增和自增运算

和 C 语言一样。Swift 也提供了方便对变量本身加1或减1的自增(++)和自减(--)的运算符。

其操作对象能够是整形和浮点型。 ‌

var i = 0
++i // 如今 i = 1

每调用一次++ii的值就会加1。

实际上。++ii = i + 1的简写。而--ii = i - 1的简写。

++--既是前置又是后置运算。

++ii++--ii--都是有效的写法。

我们须要注意的是这些运算符改动了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的值。

所以ab都是新值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

尽管一元+做无用功。但当你在使用一元负号来表达负数时,你能够使用一元正号来表达正数,如此你的代码会具有对称美。

Swift数值运算的更多相关文章

  1. shell简单用法笔记(shell中数值运算)二

    shell中变量值,如果不手动指定类型,默认都是字符串类型: 例如: a= b= c=$a+#b echo $c 结果会输出:123+456 shell中,如果要进行数值运算,可以通过一下方法: 方法 ...

  2. 在shell script中进行数值运算的两种方法

    方法1:使用"$((计算式))"的方式进行数值运算,不需要使用declare命令显示声明数值型变量来存储计算结果: 方法2:使用declare命令配合"-i"选 ...

  3. shell之数值运算

    Shell中声明变量默认是字符串, 要参与数值运算,可使用下面方式,简单,表示以数值方式.

  4. linux中的数值运算

    一.declare 作用:声明变量类型,bash默认变量为字符串类型的,并且字符串在拼接时直接拼接,不需要加号 使用方法: 二.数值运算 加法运算 a= b= c=$(($a+$b)) echo $c

  5. 数值运算内建函数(core python programming 2nd edition 5.6.2)

    数值运算内建函数 函数  功能 abs(num) 返回 num 的绝对值 coerce(num1, num2) 将num1和num2转换为同一类型,然后以一个元组的形式返回. divmod(num1, ...

  6. shell脚本基础 数值运算 判断 及if语句

    数值运算 整数运算[三种,随便掌握一种即可]expr 数字 运算符 数字 [root@ceshiji ~]# expr 1 + 1(运算符号都是+ - * / 注:*需要\*.%是取余,余数只有0 1 ...

  7. C# 2进制、8进制、10进制、16进制...各种进制间的转换(三) 数值运算和位运算

    一.数值运算 各进制的数值计算很简单,把各进制数转换成 十进制数进行计算,然后再转换成原类型即可. 举例 :二进制之间的加法 /// <summary> /// 二进制之间的加法 /// ...

  8. [Shell]Bash变量:数值运算及运算符

    ------------------------------------------------------------------------------------------------- Sh ...

  9. shell 数值运算

    declare数值运算 linux默认变量类型为字符串 declare [+/-] [选项] 变量名 '-' 给变量设定类型属性 '+' 取消变量的类型属性 '-a' 将变量声明为数组型 '-i' 将 ...

随机推荐

  1. 在Nodejs中贯彻单元测试

    在团队合作中,你写好了一个函数,供队友使用,跑去跟你的队友说,你传个A值进去,他就会返回B结果了.过了一会,你队友跑过来说,我传个A值却返回C结果,怎么回事?你丫的有没有测试过啊? 大家一起写个项目, ...

  2. texturePacker黄色文件夹和蓝色文件夹

    texturePacker中以黄色文件夹添进来的文件夹中的图片,不用带文件夹名,以蓝色文件夹添进来的文件要带文件夹名.

  3. 权限管理系统(一):权限系统与RBAC模型概述

    RBAC模型概述 RBAC即角色访问控制(Role Based Access Control) RBAC认为权限授权实际上是Who.What.How的问题.在RBAC模型中,who.what.how构 ...

  4. controller与requestmapping

    使用@controller定义controllersSpring mvc将特定url的请求分发到controller类来进行处理在spring 3.0中,通过@controller标注即可将class ...

  5. angular -- $routeParams API翻译

    原api出处: https://docs.angularjs.org/api/ngRoute/service/$routeParams $routeParams 可以获取当前路径参数. 需要ngrou ...

  6. [转贴]Cocos2d-x3.2与OpenGL渲染总结(一)Cocos2d-x3.2的渲染流程

    看了opengles有一段时间了,算是了解了一下下.然后,就在基本要决定还是回归cocos2dx 3.2的,看了这篇好文章,欣喜转之~ 推荐看原帖: Cocos2d-x3.2与OpenGL渲染总结(一 ...

  7. 解决PHP下载文件时因时文件太大而报404错误

    set_time_limit(0); ini_set('memory_limit', '512M'); header('Content-Type: application/octet-stream') ...

  8. java命令行打war

    java命令行打war(windows下) 切换到需要打包文件夹low的上级目录>jar -cfM legendwealth.war -C low .

  9. iOS-打包成ipa的4种方法

    打包ipa的前提 1.证书的申请和设置和上面文章的一样 从第一步到第四步都是一样的http://www.cnblogs.com/sunfuyou/p/5900592.html2.还有第六步的 1-3都 ...

  10. C++笔记 2

    1.程序由函数组成,函数只完成自己特定的功能即可   把函数声明写在头文件里(想使用函数时,可直接导入头文件,调用函数),把函数实现写在".cc"文件中   把多个".c ...