swift-基础04-数字类型转换
2015-12-20 20:39
260 查看
在代码中,我们对所有通用的整数常量和变量使用 Int
类型,即使他们知道非负。
使用 Int
类型意味着整数常量和变量将易于复用,易于匹配整数面值的类型推测。
只有当必要的时候,才使用其他整数类型,
比如处理外部长度明确的数据,或者为了优化性能、内存占用等,或其他必要的优化。
使用显示长度的类型有助于发现值溢出和暗示正在使用的数据的性质。
不同整数类型的常量或变量存储的范围是不同的。
Int8 的范围是-128至127,而 UInt8
的范围是 0
至 255 。
swift提供了溢出检查
如果数字不在整数类型的范围内,编译器将报告一个错误:
let cannotBeNegative :UInt8 = -1
let tooBig:Int8 =
Int8.max + 1
var suibian = cannotBeNegative
var suibian1 = tooBig
suibian++
suibian1++
因为每个整数类型可以存储不同范围的值,所以,你必须根据不同的情况选择数值类型的转换。
这样可以防止隐式转换的错误,也可以表明类型转换的意图。
let twoThousand:
UInt16 = 2_000
let one: UInt8 =
1
let twoThousandAndOne = twoThousand +
UInt16(one)
print(twoThousandAndOne)
将一个特定的数字类型转换成另一个,要用这个数字来初始化成一个需要类型的新数字。
在上面的示例中,常量 twoThousand
是 UInt16
类型,然而常量 one
是 UInt8 类型。
它们不能直接加在一起,因为他们不是同一类型。
所以,这个例子中调用 UInt16(one)
来创建新的 one 的值,并使用这个新值来计算:
因为这2个数现在都是 UInt16
类型,所以可以相加。
输出常数(twoThousandAndOne)
也被推断为UInt16类型,因为它是两个UInt16类型值的总和。
SomeType(ofInitialValue)
是 Swift 调用构造器并传入初始值的默认方法。
在语言中,UInt16
有一个构造器,可以接受一个 UInt8
类型的值,
可以用 UInt8
来创建一个新的UInt16。
你并不能传入任意类型的值,只能传入UInt16构造器需要的类型的值。
整数和浮点数之间的转换必须显示的指定类型
通过常量 three
的值创建一个新类型 Double
的值,
所以,加号两边是相同的类型。如果不转换,是不允许相加的。编译器会报错误
let three = 3
let xiaoshu =
1.1415
let pi = Double(three) + xiaoshu
print(pi)
let intpi = three +
Int(xiaoshu)
print(intpi)
结合数字常量和变量的规则不同于字面量的规则。
字面量3可以直接和字面量1.1415相加,因为数字字面量本身没有明确的类型。
在编译器求值的时候会推测类型
类型,即使他们知道非负。
使用 Int
类型意味着整数常量和变量将易于复用,易于匹配整数面值的类型推测。
只有当必要的时候,才使用其他整数类型,
比如处理外部长度明确的数据,或者为了优化性能、内存占用等,或其他必要的优化。
使用显示长度的类型有助于发现值溢出和暗示正在使用的数据的性质。
不同整数类型的常量或变量存储的范围是不同的。
Int8 的范围是-128至127,而 UInt8
的范围是 0
至 255 。
swift提供了溢出检查
如果数字不在整数类型的范围内,编译器将报告一个错误:
let cannotBeNegative :UInt8 = -1
let tooBig:Int8 =
Int8.max + 1
var suibian = cannotBeNegative
var suibian1 = tooBig
suibian++
suibian1++
因为每个整数类型可以存储不同范围的值,所以,你必须根据不同的情况选择数值类型的转换。
这样可以防止隐式转换的错误,也可以表明类型转换的意图。
let twoThousand:
UInt16 = 2_000
let one: UInt8 =
1
let twoThousandAndOne = twoThousand +
UInt16(one)
print(twoThousandAndOne)
将一个特定的数字类型转换成另一个,要用这个数字来初始化成一个需要类型的新数字。
在上面的示例中,常量 twoThousand
是 UInt16
类型,然而常量 one
是 UInt8 类型。
它们不能直接加在一起,因为他们不是同一类型。
所以,这个例子中调用 UInt16(one)
来创建新的 one 的值,并使用这个新值来计算:
因为这2个数现在都是 UInt16
类型,所以可以相加。
输出常数(twoThousandAndOne)
也被推断为UInt16类型,因为它是两个UInt16类型值的总和。
SomeType(ofInitialValue)
是 Swift 调用构造器并传入初始值的默认方法。
在语言中,UInt16
有一个构造器,可以接受一个 UInt8
类型的值,
可以用 UInt8
来创建一个新的UInt16。
你并不能传入任意类型的值,只能传入UInt16构造器需要的类型的值。
整数和浮点数之间的转换必须显示的指定类型
通过常量 three
的值创建一个新类型 Double
的值,
所以,加号两边是相同的类型。如果不转换,是不允许相加的。编译器会报错误
let three = 3
let xiaoshu =
1.1415
let pi = Double(three) + xiaoshu
print(pi)
let intpi = three +
Int(xiaoshu)
print(intpi)
结合数字常量和变量的规则不同于字面量的规则。
字面量3可以直接和字面量1.1415相加,因为数字字面量本身没有明确的类型。
在编译器求值的时候会推测类型
相关文章推荐
- iOS --- 总结Swift中常用的全局函数和extension(持续更新中)
- swift 进阶笔记 (一) —— 可选型
- 基于EF6的快速开发Web框架——Swift.Net
- OpenStack中Swift和cinder区别
- iOS开发——UI篇Swift篇&UISegmentedControl
- 项目开发笔记-2015.12.20-swift
- 关于swift的访问级别
- OC和Swift中循环引用的问题
- 教你3行代码行成高清二维码(Swift1.1)
- 教你三行代码生成高清二维码(Swift1.1)
- swift之auto layout
- swift和storyborad环境下通过xib自定义TableViewCell
- Swift语法学习之 类和结构体
- Swift 集合类型(笔记)
- 【Swift】通过tag删除动态创建的UIButton
- CocoaPod的安装及与Swift的桥接
- swift控件之旅之UIButton
- swift控件之旅之UILabel
- iOS App添加Spotlight搜索(附Swift Demo)
- swift学习日记(十) 类型转换 类型嵌套