zoukankan      html  css  js  c++  java
  • 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值:

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

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

    求余运算

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

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

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

    Art/remainderInteger_2x.png

    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

    Art/remainderFloat_2x.png

    自增和自增运算

    和 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
    

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

  • 相关阅读:
    bug排查
    做接口测试没反应
    wcf配置文件
    mvc学习-编辑提交需要注意-mvc重点
    大批量导出思路
    进程基础知识
    (转)JMS事务
    (转)JMS简明学习教程
    (转)Linux下使用system()函数一定要谨慎
    LInux文件基础知识和文件目录操作(二)文件I/O操作
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6743746.html
Copyright © 2011-2022 走看看