• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > Swift内置的数字类型及基本的转换方法

Swift内置的数字类型及基本的转换方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了swift报文类型,swift类型转换,swift猜数字游戏,taylor swift,swift等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

虽然编写任何编程语言,需要使用不同的变量来存储各种信息。变量不过是保留的内存位置来存储值。这意味着,当创建一个变量,在内存中会保留一些空间。

可能喜欢像存储字符串,字符,宽字符,整数,浮点数,布尔等各种数据类型的信息。根据一个变量的数据类型,操作系统分配内存,并决定什么可以存储保留在存储器。

内置数据类型
Swift 为程序员提供内置以及用户定义的种类数据类型。 以下是声明变量使用最频繁的基本数据类型的列表:

Int 或 UInt - 这是用于整数。更具体地可以使用Int32,Int64来定义32或64位有符号整数,其中作为UInt32或UInt64用来定义32或64位无符号整数的变量。 For example, 42 and -23.

  • Float - 这是用来表示一个32位浮点数,一般用于使用较小的小数点数字。 例如:3.14159,0.1,和 -273.158。
  • Double - 这是用来表示一个64位浮点数,用于非常大的浮点值。  例如: 3.14159, 0.1, 和 -273.158.
  • Bool - 这代表一个布尔值,真或假。
  • String - 这是有序字符集合。例如, "Hello, World!"
  • Character - 这是一个单字符字符串。例如, "C"
  • Optional - 这表示可以容纳一个值或没有任何值的变量。

有下列有关整数类型要点:

  • 在32位的平台上,Int 大小与 Int32 的大小相同。
  • 在64位的平台上,Int 大小与 Int64 的大小相同。
  • 在32位的平台上,UInt 的大小与 UInt32 的大小相同。
  • 在 64 位的平台上,UInt 的大小与 UInt64 的大小相同。
  • Int8, Int16, Int32, Int64 可以用来表示 8 Bit, 16 Bit, 32 Bit 和 64 Bit 形成有符号整数。

UInt8, UInt16, UInt32 和 UInt64 可以用来表示 8 Bit, 16 Bit, 32 Bit 和 64 Bit 形成无符号整数。
绑定值
下表显示变量类型,需要多少内存存储此值在存储器中,在这种类型的变量可以存储最大值和最小值。

2015112164254153.png (542×301)

类型别名
可以从现有类型使用typealias创建一个新的名称。以下是使用简单 typealias 的语法来定义新类型:
typealias newname = type</div>
例如,下面告诉编译器Feet 是 Int 的另一个名字:
typealias Feet = Int</div>
现在,下面的声明是完全合法的,并创建一个整型变量为 distance:
import Cocoa

typealias Feet = Int
var distance: Feet = 100
println(distance)</div>
当我们使用 playground 运行上面的程序,到以下结果。

100
</div>

类型安全
Swift 是一种安全的语言,这意味着,如果代码的一部分需要一个字符串, 那么不能错误地传递一个int。

由于 Swift 是类型安全的,当类型检查时它执行编译代码并标志类型不匹配的错误。
import Cocoa

var varA = 42
varA = "This is hello"
println(varA)</div>
当我们编译上面的程序它产生以下编译时错误。
Playground execution failed: error: :6:6: error: cannot assign to 'let' value 'varA'
varA = "This is hello"</div>
类型推断
在它编译代码时,类型推断使编译器自动推导出特定表达式的类型, 简单地通过检查所提供的值。Swift 采用类型推断制定出合适的类型如下。
 import Cocoa

// varA is inferred to be of type Int
var varA = 42
println(varA)

// varB is inferred to be of type Double
var varB = 3.14159
println(varB)

// varC is also inferred to be of type Double
var varC = 3 + 0.14159
println(varC)</div>
当我们使用 playground 运行上面的程序,得到以下结果。

42
3.14159
3.14159

</div>

Swift数字类型之间的转换
Swift数字类型之间的转换Swift是一种安全的语言,对于类型的检查非常严格,不同类型之间不能随便转换。
一、整型之间的转换
在C和Objective-C等其他语言中,整型之间有两种转换方法:
从小范围数到大范围数转换是自动的;
从大范围数到小范围数需要强制类型转换,有可能造成数据精度的丢失。
而在Swift中这两种方法是行不通的,我们需要通过一些函数进行显式地转换,代码如下:
let historyScore:UInt8 = 90


let englishScore:UInt16 = 130


let totalScore = historyScore + englishScore  //错误 ①


let totalScore = UInt16(historyScore) + englishScore   //正确 ②


let totalScore = historyScore + UInt8(englishScore)  //正确 ③
</div>

上述代码声明和初始化了两个常量historyScore和englishScore,我们把它们相加赋值给totalScore。如果采用第①行代码实现相加,程序就会有编译错误,原因是historyScore是UInt8类型,而englishScore是UInt16类型,它们之间不能转换。
我们有两种转换方法。
一种是把UInt8的historyScore转换为UInt16类型。由于是从小范围数转换为大范围数,这种转换是安全的。代码第②行UInt16(historyScore)就是正确的转换方法。
另外一种是把UInt16的englishScore转换为UInt8类型。由于是从大范围数转换为小范围数,这种转换是不安全的,如果转换的数比较大会造成精度的丢失。代码第③行UInt8(englishScore)是正确的转换方法。由于本例中englishScore的值是130,这个转换是成功的,如果把这个数修改为1300,虽然程序编译没有问题,但是会在控制台中输出异常信息,这是运行期异常。
上述代码中,UInt16(historyScore)和UInt8(englishScore)事实上是构造器,能够创建并初始化另外一个类型。二、整型与浮点型之间的转换
整型与浮点型之间的转换与整型之间的转换类似,因此我们将上一节的示例修改如下:
let historyScore:Float = 90.6         ①


let englishScore:UInt16 = 130         ②


let totalScore = historyScore + englishScore  //错误         ③


let totalScore = historyScore + Float(englishScore)  //正确,安全    ④


let totalScore = UInt16(historyScore) + englishScore  //正确,小数被截掉 ⑤
</div>
上述代码经过了一些修改,第①行代码historyScore变量类型是Float类型。第②行代码englishScore变量还是UInt16类型。其中第③行代码直接进行了计算,结果有编译错误。第④行代码是将UInt16类型的englishScore变量转换为Float类型,这种转换是最安全的。第⑤行代码是将Float类型的historyScore变量转换为UInt16类型,这种转换首先会导致小数被截掉,另外如果

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Swift 数据类型
  • Swift 可选(Optionals)类型
  • Swift 类型转换
  • 详解Swift中的数据类型类型转换
  • 实例讲解Swift中引用类型的ARC自动引用计数
  • Swift编程之枚举类型详解
  • Swift编程中的一些类型转换方法详解
  • 深入解析Swift编程中枚举类型的相关使用
  • Swift内置的数字类型及基本的转换方法
  • Swift类型创建之自定义一个类型详解

相关文章

  • 2017-05-28通过示例分析Swift单例模式
  • 2017-05-28eclipse中maven插件安装教程
  • 2017-05-28Swift编程中的一些类型转换方法详解
  • 2017-05-28Swift数组详细用法解析
  • 2017-05-22Swift 继承
  • 2017-05-28Maven+SSM框架实现简单的增删改查
  • 2017-05-28Ubuntu 16.04上安装 Swift 3.0及问题解答
  • 2017-05-28Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
  • 2017-05-28gson ajax 数字精度丢失问题的解决方法
  • 2017-05-28Swift心得笔记之集合类型

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Swift能代替Objective-C吗?
    • Swift面试题及答案整理
    • 深入讲解C语言编程中volatile修饰符的作用
    • Swift 扩展
    • Swift编程中的switch...case语句实例解析
    • Swift心得笔记之函数
    • Swift 3.0 enum 的灵活使用介绍
    • iOS开发中Swift 指纹验证功能模块实例代码
    • Mybatis传list参数调用oracle存储过程的解决方法
    • Swift实现快速排序算法的代码示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有