Swift溢出

在Swift中我们一般简单的使用Int来表示整数,在iPhone 5和以下的设备中,这个类型其实等同于Int32,而在64位设备中表示的是Int64(这点和Objective-C中的NSIntereger表现是完全一样的,事实上,在Swift中NSInteger只是一个Int的typealias)。这就意味着,我们在开发的时候必须考虑同样的代码在不同平台上的表现差异,比如下面的这段代码计算在32位设备上和64位设备上的表现就完全不同:


class MyClass {

     var a:Int = 1

     func method() {

          a= a*100000

          a= a*100000

          a= a*100000

          printle(a)

     }

}

MyClass().method()

//64位环境

//1,000,000,000,000,000


//32位环境

//崩溃


Swift在溢出的时候选择让程序直接崩溃而不是截掉超出的部分,这也是一种安全性的表现。

编译器可以帮助我们在编译的时候就发现某些必然的错误,比如:


func method() {

     var max = Int.max

     max = max + 1

}


在Swift中,我们可以使用以下这五个带有&的操作符,这样的Swift就会忽略掉溢出的错误:

溢出加法 &+

溢出减法 &-

溢出乘法 &*

溢出除法 &/

溢出求模 &%


var max = Int.max

max = max &+ 1

//64位系统下

//max = -9,223,372,036,854,775,808

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值