当前位置: 首页 > news >正文

Welcome to Swift (苹果官方Swift文档初译与注解九)---58~62页(第二章)

Integer Bounds (整型范围)

  你可以使用min和max属性来访问每个整型的最小值和最大值:

    let minValue = UInt8.min  // minValue是0, 类型是 UInt8

    let maxValue = UInt8.max  // maxValue 是 255, 类型是 UInt8

  min和max属性的具体值是与数值类型相关的(比如上面代码中的UInt8).

Int (Int整型)

  在多数情况下,你在代码里不需要处理整型的字节大小.Swift提供了另一种整型类型,int.它总是与当前平台位数保持一致:

    在32位平台, Int 与 Int32相同.

    在64位平台, Int 与 Int64相同.

  除非在实际工作中要专门指定整型的长度,如果不是,通常推荐在代码中使用int来定义整型值,这有利于代码的统一性和复用性.即使在32位平台下,int类型也可以存          取-2,147,483,648 到 2,147,483,647之间的数值,对许多整数类型来说是够用的范围了.

 UInt (UInt整型)

  Swift也提供了无符号整型,UInt它同样是与平台位数保持相同长度:

    在32位平台, Int 与 Int32相同.

    在64位平台, Int 与 Int64相同.

  注意点

  除非你特别需要指定一个无符号整型,如果不是这样,官方推荐使用Int,即使被存取的数值是非负数.使用Int 整型的一个好处是代码的复用性.避免在不同数字类型进行转换,避免匹配整  型的类型.

Floating-Point Numbers (浮点数)

  浮点数是包含小数部分的数值,比如“3.14159, 0.1,和 -273.15.

  浮点数可以表示比整型更宽的数值范围,也可以存取比Int类型更大和更小的数值.Swift提供了两种有符号的浮点类型:

  Double 表示一个64位浮点数.在需要处理的数值非常大或者需要非常精确的时候使用. 

  Float 表示一个32位的浮点数.  

  注意点

  Double精确至少15位的十进制数字,而Float处理6位十进制数字.在代码里使用浮点类型要根据你实际工作中需要的数值范围来定.

Type Safety and Type Inference (类型安全与类型判断)

  Swift是一门类型安全的语言.一种类型安全的语言能够确保你清晰的知道代码里值的类型.如果代码里你希望是一个String类型值,你就不可以错误的传Int类型给它.

  因为Swift是类型安全语言,所有它在编译代码的时候会进行类型检查,一旦发现类型匹配错误就会立刻报错.这帮助你在开发阶段尽早的找到并修正潜在的代码错误.

  代码检测帮助你避免处理不同类型值时犯错误.但这不意味着你必须对每个定义的常量或者变量都指定类型.如果你没有指定值的类型,Swift使用类型判断来确定对应的类型.类型判断  能够帮助编译器在编译代码的时候,根据检测值来自动的减少对应的表达式.

  正是由于类型检查,是Swift比C和OC更少的要求类型声明.常量和变量是需要明确类型声明.指定类型的工作,Swift已经都为你做好了.

  在初始化一个常量或者变量的时候,类型判断会特别有用.初始化是在定义常量或者变量的时候,就给它们指定一个确切的值(就像后面代码样例中的42和3.14159)

  如果你指定一个明确的值42给新的常量,但没有说明常量的类型,Swift会推断你希望常量类型是Int,因为你使用了一个整型的值来进行初始化.

    let meaningOfLife = 42

    // meaningOfLife 是Int类型

  同样的,如果你没有明确指定浮点数据类型,Swift会推断你想创建一个Double类型.

    let pi = 3.14159

    // pi 的类型是 Double

  Swift在推断浮点类型时总是默认选择Double(而不是Float).

/****************未完待续************************/

 

转载于:https://www.cnblogs.com/caios/p/3784851.html

相关文章:

  • 高级mask应用
  • 义隆单片机学习笔记之(四) 编程及烧录
  • ASP.NET MD5加密
  • topcoder SRM 618 DIV2 MovingRooksDiv2
  • 微信公众号自定义菜单与回车
  • 协议分析-迅雷镜象服务器下载
  • 一个硬件高手的设计经验分享
  • log4j 将日志记录到数据库
  • 如何用笔记本组建家庭点歌系统
  • 什么是大数据?
  • 动态注册BroadcastReceiver
  • ASP.NET怎么防止多次点击提交按钮重复提交
  • @html.ActionLink的几种参数格式
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • HTML中Select的使用具体解释
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Apache Zeppelin在Apache Trafodion上的可视化
  • If…else
  • PAT A1120
  • webpack+react项目初体验——记录我的webpack环境配置
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 程序员该如何有效的找工作?
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 排序算法之--选择排序
  • 全栈开发——Linux
  • 如何设计一个微型分布式架构?
  • 数组大概知多少
  • 算法-插入排序
  • 微信小程序设置上一页数据
  • (1)(1.13) SiK无线电高级配置(六)
  • (3)llvm ir转换过程
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (8)STL算法之替换
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm码农论坛 毕业设计 231126
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)树状数组
  • .net 4.0发布后不能正常显示图片问题
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Project Open Day(2011.11.13)
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET业务框架的构建
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • /etc/sudoer文件配置简析
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [20190113]四校联考
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [C/C++]数据结构 循环队列
  • [c++] C++多态(虚函数和虚继承)
  • [C++]打开新世界的大门之C++入门