您的位置:首页 > 移动开发 > Swift

Swift溢出

2016-05-12 03:52 471 查看
在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: