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)断言的使用注意

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

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

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

目录
相关文章
|
27天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
83 3
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
122 2
|
1天前
|
API 定位技术 iOS开发
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
【4月更文挑战第18天】**Cocoa Touch** 是iOS和Mac OS X应用的核心框架,包含面向对象库、运行时系统和触摸优化工具。它提供Mac验证的开发模式,强调触控接口和性能,涵盖3D图形、音频、网络及设备访问API,如相机和GPS。是构建高效iOS应用的基础,对开发者至关重要。
8 0
|
16天前
|
开发工具 Swift iOS开发
利用SwiftUI构建动态用户界面:iOS开发新范式
【4月更文挑战第3天】 随着苹果不断推进其软件开发工具的边界,SwiftUI作为一种新兴的编程框架,已经逐渐成为iOS开发者的新宠。不同于传统的UIKit,SwiftUI通过声明式语法和强大的功能组合,为创建动态且响应式的用户界面提供了一种更加简洁高效的方式。本文将深入探讨如何利用SwiftUI技术构建具有高度自定义能力和响应性的用户界面,并展示其在现代iOS应用开发中的优势和潜力。
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
181 2
|
3月前
|
数据可视化 iOS开发
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
40 4
|
3月前
|
iOS开发
iOS开发解释 App 生命周期,包括各个阶段的调用顺序。
iOS开发解释 App 生命周期,包括各个阶段的调用顺序。
26 1
|
3月前
|
存储 安全 数据安全/隐私保护
IOS开发数据存储:解释一下 iOS 中的 Keychain,它的作用是什么?
IOS开发数据存储:解释一下 iOS 中的 Keychain,它的作用是什么?
84 4
|
3月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
38 0
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
89 2

相关课程

更多