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
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
相关文章推荐
- 【Swift学习】Swift编程之旅---ARC(二十)
- 集成百度地图SDK(swift)
- CocoaPods相关知识点
- Swift 隐藏导航栏,变色动画
- Swift讲解专题六——流程控制
- Swift版本仿网易云音乐播放音乐动画效果
- Swift - 使用addSubview()方法将StoryBoard中的视图加载进来
- swift语言的学习笔记
- swift (Singleton)模式
- swift 中showAlertTitle的使用
- 探索 Swift 中的 MVC-N 模式
- Swift 3.0 预告:将 Objc 库转换成更符合 Swift 语法风格的形式
- 零基础学习swift
- Swift 学习笔记 (二)
- Swift NSLayoutConstraint 加约束Constraint
- 对比swift、c#、java的getter和setter方法
- 04_Swift2基础之类型安全和类型推测+字面量+类型别名
- 02_Swift2基础之常量和变量+注释+分号
- Swift-属性(Properties)(九)
- IOS开发学习-篇外Swift2常用语法-3