2.5 Swift赋值运算符,溢出运算符, 空合并运算符 ??

        /**

         赋值运算符

         =    +=  %=  *=  /=

         本质上是对内存的写操作

         */

        

        let b = 10

        var a = 9

        var d:Int

        

        a = 6

        // c语言中可以这样子,但是 swfit 表达式 a = 6 是没有值的

        // swift中禁止连续赋值

        //        d = a = 6

        

        print("a的值\(a)")

        print("a = 6表达式的值==\(a = 6)")

        

        // 加括号的连续赋值都不行的呀

//                 d = (a += 6)

        


        

        


        

        /**

         像这种就会报错的

         因为Swift的赋值操作并不返回任何值。

         这个特性防止程序员将 c == 6 的判断误写成 c = 6,减少了常规的编码错误

         Use of '=' in a boolean context, did you mean '=='?

         */

//        if c = 6 {

//            print("lalla")

//        }

        

        

        

        /**

         溢出运算符  &+ &-  &*

         */

        var c = UInt8.min

        

        /**

         Arithmetic operation '0 - 1' (on type 'UInt8') results in an overflow

         */

//        c = c - 1

        c = c &- 1

        print("c==\(c)")

        /**

         c==255

         */

        

        

        /**

         Swift中可以 对浮点数求余

         */

        

        /**

         '%' is unavailable: Use truncatingRemainder instead

         现在不可以直接这样写了

         let rem = 10 % 2.3

         */

        let rem = CGFloat(10).truncatingRemainder(dividingBy: 2.3);

        print("rem==\(rem)")

        /**

         rem==0.800000000000001

         remainderA is '1.0'.

         remainderB is '2.1'.

         */

        

        

        var remainderA = CGFloat(3).truncatingRemainder(dividingBy: 2);

        print("remainderA is '\(remainderA)'.") // 输出 remainderA is '1'

        

        var remainderB = CGFloat(5.2).truncatingRemainder(dividingBy: 3.1)

        print("remainderB is '\(remainderB)'.") // 输出 remainderB is '2.1'

        

        

        

        

        

         /**

         空合并运算符  (a ?? b) 将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b

         两个条件:表达式a必须是可选类型,默认值b的类型必须要和a存储值的类型一致

         

         Swift中有一个非常有用的操作符,可以用来快速的对 nil 进行判断。

         ??

         这个操作符可以判断当左侧的值是 nil Optional值时返回其value

         左侧为nil时返回其右侧的值。比如

         */

        var level: Int?

        var startLevel = 1

         

        var currentLevel = level ?? startLevel

        print("currentLevel==\(currentLevel)")

        

        let name: String? = "老王"

        let name1: String? = nil

        

        // ?? 运算符的优先级低于 + 号,注意使用的时候加上括号啊

        print(name ?? "" + "你好")

        print(name1 ?? "" + "你好")


        

        

        addNumber(x: 3, y: nil)

        


    func addNumber(x: Int?, y: Int?) -> Void {

        

        // 1.强制解包有风险

//        print(x! + y!)

        

        

        // 2.使用 if 判断,但是如果直接使用if,参数很多的时候,会使代码很丑

        if x != nil && y != nil {

            print(x! + y!)

        } else {

            print("x 或者 y nil")

        }

        

        // 使用 运算符 ??

        print((x ?? 0) + (y ?? 0))

    }

    




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值