iOS开发Swift篇—(四)运算符

简介: iOS开发Swift篇—(四)运算符 一、运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=、-= 算术运算符:+、-、*、/ 求余运算符:% 自增、自减运算符:++、-- 比较运算符:==、!=、>、=、 5,(7 > 6) && (9 != ...

iOS开发Swift篇—(四)运算符

一、运算符

1.Swift所支持的部分运算符有以下一些

赋值运算符:=

复合赋值运算符:+=、-=

算术运算符:+、-、*、/

求余运算符:%

自增、自减运算符:++、--

比较运算符:==、!=、>、<、>=、<=

逻辑运算符:&&、||、!

三目运算符:? :

范围运算符:..< 、...

溢出运算符:&+、&-、&*、&/、&%

 

2.赋值运算符

(1)1对1赋值

var a = 5

let b = 20

 

(2)N对N赋值(元组)

let (x, y) = (1, 2)   // x的值是1,y的值是2,并且都是常量

 

注意:跟C\OC不一样的是:Swift的赋值运算符没有返回值

if (x = y) {  }

// 上面的代码是错误的,因为x = y并没有返回具体的值

 

说明:这样的好处是防止误用 = 和 ==

 

3.算术运算符

简单使用

1 + 2       // 3

5 - 3       // 2

2 * 3       //  6

10.0 / 2.5  // 4.0

"http://" + "www.wendingding.cn"  //  "http://www.wendingding.cn"

 

4.求余运算符

%在Swift中叫“求余运算符”,也有语言叫做“模运算符”

9 % 4 // 1

-9 % 4 // -1

9 % -4 // 1

-9 % -4 // -1

提示求余结果的正负跟%左边数值的正负一样

 

注意:跟C语言不一样的是,Swift的%支持浮点数的计算

8 % 2.5  // 0.5

 

5.Bool类型

Bool类型,也被称为逻辑类型(Logical),就2种取值

true:真

false:假

 

注意:在C语言中:0是假,非0就是真;而在Swift中没有这种概念

if语句的条件必须是Bool类型的值

(1)错误写法

if (10) {

    println("条件成立")

}

 

(2)正确写法

if (true) {

    println("条件成立")

}

 

6.三目运算符

比较运算符\逻辑运算符会返回Bool类型的值,取值有2种可能

true:真,6 > 5,(7 > 6) && (9 != 7)

false:假,6 < 5,(7 >= 6) && (9 == 7)

 

三目运算符的条件必须是Bool类型的值

(1)错误写法

let a = 10

let c = a ? 100 : 200

 

(2)正确写法

let c = a != 0 ? 100 : 200

let c = false ? 100 : 200

 

7.范围运算符

范围运算符用来表示一个范围,有2种类型的范围运算符

闭合范围运算符:a...b,表示[a, b],包含a和b

半闭合范围运算符:a..<b,表示[a, b),包含a,不包含b

 

举例:

// index的值从1~5

 

// index的值从1~4

 

8.溢出运算符

(1)简单说明

每种数据类型都有自己的取值范围,默认情况下,一旦赋了一个超出取值范围的数值,会产生编译或者运行时错误

注意:下面的写法是错误的

let x = UInt8.max

let y = x + 1

第2行代码会在运行时报错(运行时错误)

   

提示:上面是运行时错误,下面的错误提示是编译时错误。

  

Swfit为整型计算提供了5个&开头的溢出运算符,能对超出取值范围的数值进行灵活处理

溢出加法 &+

溢出减法 &-

溢出乘法 &*

溢出除法 &/

溢出求余 &%

(2)值的上溢

let x = UInt8.max

let y = x &+ 1

第1行代码过后:x的值是 255(最大值)

第2行代码过后:y的值是 0(最小值)

(3)值的下溢

let x = UInt8.min

let y = x &- 1

第1行代码过后:x的值是 0(最小值)

第2行代码过后:y的值是 255(最大值)

  

有符号整数也有类似的溢出现象

let x = Int8.min

let y = x &- 1

第1行代码过后:x的值是 -128(最小值)

第2行代码过后:y的值是 127(最大值)

  

(4)除零溢出

默认情况下,一个数除于0,或者对0求余数,编译器会直接报错

let x = 10

let y = x / 0

let z = x % 0

第2、3行代码:编译器都会报错

 

如果使用溢出运算符,就不会报错

let x = 10

let y = x &/ 0

let z = x &% 0

y和z的值最终都是0

 

二、断言

1.简单说明

断言是一种实时检测条件是否为true的方法

如果条件为true,那么代码继续执行

如果条件为false,就抛出错误信息,直接终止程序的运行

 

2.断言的用法

使用全局的assert函数

assert函数接收一个Bool表达式和一个断言失败时显示的消息

assert(index >= 0, "index必须大于0")

如果index大于等于0,就继续执行后面的代码

如果index小于0,就抛出错误信息(下面的黑色字),直接终止程序的运行

assertion failed: index必须大于0

 

assert(index >= 0)

可以省略错误信息,但不推荐,这样不利于调试

 

3.使用场景和注意

(1)下面的场景,可能用到断言

检测数组的索引:不能太小或者太大,否则造成数组越界

检测传递给函数的参数:如果是无效参数,将不能在该函数中使用

 

(2)断言的使用注意

断言会导致程序运行的中止,如果不管条件是否成立,都要继续往下执行代码,那就不能用断言

断言可以保证错误在开发过程中会被及时发现,但发布的应用里最好不要使用

如果一个程序用着用着就突然崩溃闪退,会严重影响用户体验

目录
相关文章
|
10天前
|
机器学习/深度学习 TensorFlow Swift
Swift语言适合多个领域的开发
Swift语言适合多个领域的开发
40 9
|
10天前
|
安全 编译器 Swift
Swift开发
Swift开发
30 9
|
5天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
6天前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
15 2
|
13天前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
34 9
|
9天前
|
设计模式 Swift iOS开发
探索iOS开发:从基础到高级,打造你的第一款App
【10月更文挑战第40天】在这个数字时代,掌握移动应用开发已成为许多技术爱好者的梦想。本文将带你走进iOS开发的世界,从最基础的概念出发,逐步深入到高级功能实现,最终指导你完成自己的第一款App。无论你是编程新手还是有志于扩展技能的开发者,这篇文章都将为你提供一条清晰的学习路径。让我们一起开始这段旅程吧!
|
12天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
10天前
|
iOS开发 开发者
探索iOS开发中的SwiftUI框架
【10月更文挑战第39天】在苹果的生态系统中,SwiftUI框架以其声明式语法和易用性成为开发者的新宠。本文将深入SwiftUI的核心概念,通过实际案例展示如何利用这一框架快速构建用户界面,并探讨其对iOS应用开发流程的影响。
|
13天前
|
JSON 前端开发 API
探索iOS开发之旅:打造你的第一个天气应用
【10月更文挑战第36天】在这篇文章中,我们将踏上一段激动人心的旅程,一起构建属于我们自己的iOS天气应用。通过这个实战项目,你将学习到如何从零开始搭建一个iOS应用,掌握基本的用户界面设计、网络请求处理以及数据解析等核心技能。无论你是编程新手还是希望扩展你的iOS开发技能,这个项目都将为你提供宝贵的实践经验。准备好了吗?让我们开始吧!
|
物联网 Android开发 iOS开发
iOS开发 - 蓝牙学习的总结
iOS开发 - 蓝牙学习的总结
185 0