Swift基础学习(二)数据类型

  在编程语言中,不同的数据信息需要不同的数据类型来存储,计算机内存中针对不同的数据类型它们所分配的内存大小是不同的,特定的值需要特定的类型来声明。

 Swift 数据类型

  内置数据类型

  整数 - Int & UInt

  根据一个整数变量占据的内存空间(8/16/32/64-bit,现在 iOS 开发基本全部是 64 位)以及整数是否带有符号(Unsinged),Swift 一共定义了 8 种不同的整数类型:

  Int8/Int16/Int32/Int64

  UInt8/UInt16/UInt32/UInt64

  第一行表示有符号整数,第二行表示无符号整数。

  一般不会在代码中直接使用这些具体的整数类型,只使用 Int 来定义有符号整数,使用 UInt 来定义无符号整数。Swift 编译器会根据当前的目标编译平台,把 Int 或者 UInt 转换成相应的整数类型。

  例如在 32 位平台上,Int 和 Int32 表示的整数长度相等。

  在 64 位平台上,分别使用 mix 和 max 方法,看看 Int 和 Int64 所表达的值分别是多:

 1 print("Int.min = \(Int.min)")
 2 print("Int.max = \(Int.max)")
 3 print("Int64.min = \(Int64.min)")
 4 print("Int64.max = \(Int64.max)")
 5 
 6 打印结果:
 7 Int.min = -9223372036854775808
 8 Int.max = 9223372036854775807
 9 Int64.min = -9223372036854775808
10 Int64.max = 9223372036854775807

  Int 和 Int64 表达的范围是一样的。

  同时在 Swift 里面,可以用不同的进制来表达一个整数:

1 let fifteenInDecimal = 15 // 10 进制
2 let fifteenInHex = 0xF // 16 进制
3 let fifteenInOctal = 0o17 // 8 进制
4 let fifteenInBinary = 0b1111 // 2 进制

  以及在数字中使用下划线:

1 let million = 1_000_000

  提示: 除非所在的硬件平台有特别明确的要求要使用 UInt 来定义无符号整数,那么应该尽可能的使用 Int 来表达所有的整数类型,哪怕可以确定一个整数一定是非负数,这会减少很多不必要的类型转换的麻烦。

 浮点数 - Float & Double

  在 Swift 里面,根据表达的精度不同,有两种不同的浮点数类型:

  Float: 最多表达 6 位精度的浮点数。

  Double: 至少可以表达 15 位精度的浮点数。

1 var oneThirdInFloat: Float = 1/3
2 var oneThirdInDouble: Double = 1/3
3 
4 print("\(oneThirdInFloat)")
5 print("\(oneThirdInDouble)")
6 
7 打印:
8 0.333333
9 0.333333333333333

  还可以使用科学计数法表示浮点数:

1 var PI = 0.314e1
2 PI = 314e-2

  提示: 如果没有明确的需求,应该统一使用 Double 来定义浮点数。

 和数字有关的 Type Inference

  在 Swift 里,当给变量不指定类型的时候,编译器会把整数的类型推倒为 Int,会把浮点数的类型推倒为 Double:

1 var three = 3
2 print(" 3 的类型是: \(type(of: three))")
3 
4 var zeroPointForteen = 0.4
5 print(" 0.4 的类型是: \(type(of: zeroPointForteen))")
6 
7 打印:
8  3 的类型是: Int
9  0.4 的类型是: Double

  在 Swift 里面可以把不同类型的数字的字面值直接进行运算:

1 var PI = 3 + 0.14
2 print(" PI 的值: \(PI), PI 的类型是:\(type(of: PI))")
3 
4 打印:
5  PI 的值: 3.14, PI 的类型是:Double

  但是不能把不同数字类型的变量直接进行算数运算,当对变量进行算数运算的时候,所有变量的类型必须是相同的,如果变量类型不同,必须明确将其中一些变量进行类型转换:

1 var sum = Double(three) + zeroPointForteen

  从上面可以看出,使用 Double(three) 把一个 Int 类型的 three "转换"成了浮点数,在这里,之所以对转换加引号,是因为并没有真的把 three 类型从 Int 转换成 Double,而是用 three 的值,初始化了一个新的值为 3 的 Double,并用这个新的 Double 和 zeroPointForteen 相加而已。

参考链接:https://www.boxueio.com/series/swift-up-and-running/ebook/2

 

转载于:https://www.cnblogs.com/chmhml/p/6892308.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看看大疆的C语言面试题

惯例,这笔试题也是一个读者朋友发给我的,简单看了下,并不觉得这是一个非常困难的题目,最近是校招准备的时候,很多人给我说发面试题对大家有帮助。这个题目面试官强调了这个跑在64位系统下。代码如下:#define mal(x,y) …

php三级栏目调用,织梦当前栏目调用二级、三级栏目且栏目高亮解决方法

在处理企业站的时候&#xff0c;经常发现要调用二三级栏目栏目&#xff0c;且需要高亮显示&#xff0c;具体实现方法如下。1、打开 \include\taglib\channelartlist.lib.php 找到$tpsql " reid$typeid AND ispart<>2 AND ishidden<>1 ";改成if($typeson…

RocketMQ实战(一)

阿里巴巴有2大核心的分布式技术&#xff0c;一个是OceanBase&#xff0c;另一个就是RocketMQ。在实际项目中已经领教过RocketMQ的强大&#xff0c;本人计划写一个RocketMQ实战系列&#xff0c;将涵盖RocketMQ的简介&#xff0c;环境搭建&#xff0c;初步使用、API详解、架构分析…

C面试总结文档

最近很多人有参加面试&#xff0c;面试就避免不了笔试&#xff0c;嵌入式面试的话&#xff0c;避免不了C语言&#xff0c;所以给大家准备了两份pdf C语言面试总结的文档。在本公众号回复 「C面试」获取pdf下载链接推荐阅读&#xff1a;专辑|Linux文章汇总专辑|程序人生专辑|C语…

linux下根据端口查进程,linux根据进程查端口,根据端口查进程

[roottest_environment src]# netstat -tnllup 能显示对应端口和进程Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemdtcp 0 0 0.0.0.0:6000 0.0.0.0:*…

程序员到底怎么了

我们是这样的一群人&#xff1a;每天都在“努力”的工作着&#xff0c;每天都和计算机打交道&#xff0c;泡在网上&#xff0c;打游戏&#xff0c;查资料&#xff0c;发微博。可是有一天&#xff0c;突然意识到&#xff0c;我们的未来在哪里&#xff0c;每个月那点可怜的工资&a…

SQLServer查询表结构

SELECT 表名case when a.colorder1 then d.name else end, 表说明case when a.colorder1 then isnull(f.value,) else end, 字段序号a.colorder, 字段名a.name, 标识case when COLUMNPROPERTY( a.id,a.name,IsIdentity)1 then √else end, 主键case when exists(SELECT 1 F…

来看看比尔盖茨当年写的BASIC解释器源代码吧,你就知道泰勒级数有什么用了...

几年前当我刚上大学那会&#xff0c;我曾经问过我一位学计算机同学的一个问题&#xff1a;计算机是如何计算诸如 或者 这种运算的&#xff1f;当初这个问题曾经困扰了我好长时间&#xff0c;这个问题并非是我当年在微积分课堂上解决的&#xff0c;而是直到我后来接触编程后才彻…

linux查看进程ppid,pidof命令从运行的进程中以名称查找出进程号PID/PPID横向大到小展示...

1.释义从运行的进程中以名称查找出进程号PID/PPID横向大到小展示2.系统帮助PIDOF(8) Linux System Administrators Manual PIDOF(8)NAMEpidof -- find the process ID of a running program.SYNOPSISSYNOPSISpidof [-s] [-c] [-n] [-x] [-m] [-o omitpid[,omitpid..]] [-o omit…

语言的本地化支持

Support channels on IRC and mailing lists exist for Ubuntu users whose first language is not English. You are welcome to join one of these or start your own. 对于母语不是英语的Ubuntu用户来说&#xff0c;已经有相应的邮件列表和IRC频道提供支持。欢迎你加入它们…

手机可以连接多少个蓝牙设备?

这是一个课题研究&#xff0c;蓝牙的东西我们可以先不说&#xff0c;我们讨论一个产品需求。我经常遇到一个场景&#xff0c;就是我用我的手机连上TWS蓝牙耳机听音乐&#xff0c;然后呢&#xff0c;我没有开车&#xff0c;我下地铁的时候&#xff0c;我需要打开我的手机&#x…

Spring简洁总结

Spring简洁总结 要的对象不是自己建的&#xff0c;而是IOC容器&#xff08;XML文件&#xff09;给的&#xff0c;我们通过getbean来调用。 依赖注入的话就是对象&#xff08;bean&#xff09;的成员的赋值不是我们手动完成&#xff0c;而是容器&#xff08;XML文件&#xff09;…

linux 网络 守护进程 禁止,Linux守护进程基础

1 守护进程中涉及到的基本概念1.1进程组1.1.1 进程组基本概念进程组是一个或多个进程的集合&#xff0c;可以接收来自同一个终端的各种信号。每运行一个程序或是命令都将产生一个进程组。每个进程属于一个进程组&#xff0c;而每个进程组都存在一个领头进程(或是叫组长进程)&am…

抽象工厂的应用

抽象工厂的应用本文是描述了自己对设计模式的工厂的了解.肯定有错误和不足的地方,希望大家能给予支持和建议. 1&#xff0e;问题的引出在前面的Post中,我描述了.NET的反射在软件设计中的应用.当这篇Post发表之后&#xff0c;有人认为用工厂来实现更合理一些。在这篇Post里&…

一口气搞懂「文件系统」,就靠这 25 张图了

前言不多 BB&#xff0c;直接上「硬菜」。正文文件系统的基本组成 文件系统是操作系统中负责管理持久数据的子系统&#xff0c;说简单点&#xff0c;就是负责把用户的文件存到磁盘硬件中&#xff0c;因为即使计算机断电了&#xff0c;磁盘里的数据并不会丢失&#xff0c;所以可…

linux里没有grub文件,linux – 安装Ubuntu后没有grub菜单,直接启动...

我有两个独立的SSD.其中一个安装了Windows 10 Pro,另一个安装了Ubuntu 14.04.3 LTS.当我的计算机启动时,我没有选择grub菜单来选择我要启动的操作系统,它会直接自动启动到Ubuntu.当将SSD设置为BIOS中引导顺序中的第一个SSD时,我可以启动进入Windows的问题.我有第三个2TB硬盘,我…

Samba远程代码执行漏洞(CVE-2017-7494)复现

简要记录一下Samba远程代码执行漏洞(CVE-2017-7494)环境搭建和利用的过程&#xff0c;献给那些想自己动手搭建环境的朋友。(虽然已过多时) 快捷通道&#xff1a;Docker ~ Samba远程代码执行漏洞(CVE-2017-7494) 演 示&#xff1a;服务器版“永恒之蓝”高危预警 &#xff0…

mac 终端登陆linux,Mac终端自动登录服务器

效果输入命令&#xff0c;选择一个序号登录服务器$ aoel(1) first 192.168.1.1(2) 第二台机器 192.168.1.2配置文件1. 填写服务器信息 computerInfo.ini#ip port user password description192.168.1.1 22 root 123456 first machine192.168.1.2 22 root 123456 第二台机器2. 使…

你说,辽宁输在哪了?

今晚看完了整场比赛&#xff0c;比赛很激烈&#xff0c;有完美的地方&#xff0c;也有不完美的地方看完比赛后&#xff0c;我一个刚从美国回来&#xff0c;现在在凤凰山脚下隔离的同学发消息给我说 「怎么才打三场就拿了总冠军了」&#xff1f;说下比赛整场比赛&#xff0c;辽宁…

[导入]Gemini翻譯為中文時的注意事項

1. 一般檔案 *.aspx, *.ascx 在翻譯為繁體中文或簡體中文後都要儲存為ANSI格式&#xff0c;不可用UTF-8&#xff0c;不然會亂碼&#xff0c;繁體轉簡體也有問題 2. Template中信件的樣版檔案 *.vm &#xff0c;反而要另存為 UTF-8 格式&#xff0c;不然收到的信會是亂…