swift 03 运算符

swift 03 运算符,第1张

概述1.赋值运算符 赋值运算(a = b),表示用b的值来初始化或更新a的值: var b = 10var a = 5a = b // a 现在等于 10 Swift 的赋值语句没有返回值,所以以下代码是错误的: // 此句错误, 因为 x = y 并不返回任何值if x = y { } 2.算术运算符 Swift 让所有数值类型都支持了基本的四则运算: 加法(+) 减法(-) 乘法(*) 除 1.赋值运算符

赋值运算(a = b),表示用b的值来初始化或更新a的值:

var b = 10var a = 5a = b // a 现在等于 10

Swift 的赋值语句没有返回值,所以以下代码是错误的:

// 此句错误,因为 x = y 并不返回任何值if x = y { }
2.算术运算符

Swift 让所有数值类型都支持了基本的四则运算:
加法(+)
减法(-)
乘法(*)
除法(/)

var a=1 + 2       // 等于 3var b=5 - 3       // 等于 2var c=2 * 3       // 等于 6var d=10.0 / 2.5  // 等于 4.0
3.溢出运算符

Swift不允许整型变量或者常量被赋值一个超出其表数范围的数值,如果试图这么干,则会出现运行时错误:

var a:Int16=32767 //a+1的值超出了Int16的表数范围,则下面的代码会导致错误a=a+1

如果希望数据溢出时Swift程序只是对一出的数据位进行截断而不是导致错误,则可以使用以&开头的溢出运算符:

溢出加法 &+ 溢出减法 &- 溢出乘法 &* 溢出除法 &/ 溢出求余 &% 值的上溢

下面例子使用了溢出加法&+来处理无符号整数的上溢出:

// max等于UInt8的最大整数 255var max = UInt8.max// 这时候 max 等于 0max= max&+ 1

max用Int8所能承载的最大值255(二进制11111111),然后用&+加1。然后UInt8就无法表达这个新值的二进制了,也就导致了这个新值上溢出了,大家可以看下图。溢出后,新值在UInt8的承载范围内的那部分是00000000,也就是0。

值的下溢

数值也有可能因为太小而越界:

// min等于UInt8的最小值0var min= UInt8.min// 此时 min等于 255min= min&- 1

UInt8的最小值是0(二进制为00000000)。使用&-进行溢出减1,就会得到二进制的11111111即十进制的255。

除零溢出

整数和整数在进行除法或者求余运算时,如果被除数为0,程序将会出错:

let x=10let y = x / 0 //出错

改为可溢出运算符:

let x=10let y = x &/ 0 //结果为0
4.位运算符

假设变量A=60,变量B=13,那么位运算的结果如下:

A = 0011 1100B = 0000 1101A & B = 0000 1100 //结果为12A|B = 0011 1101   //结果为61A^B = 0011 0001   //结果为49~A  = 1100 0011   //结果为-61
5.范围运算符

Swift包括两个范围的运算符,用于表达值的范围。

闭范围运算符

闭范围运算符a…b定义一个包含从a到b(包括a和b)的所有值的范围,其中a不能大于b。 闭范围运算符在迭代一个范围的所有值时是非常有用的,如在for-in循环中:

//结果为15for num in 1...5 {    print(num) }
半开范围运算符

半开范围运算符a..<b用于定义一个从a到b(包括a边界不包括b边界),其中a不能大于b。

//结果为14for num in 1..<5 {    print(num) }
6.比较运算符 等于(a == b) 不等于(a!= b) 大于(a > b) 小于(a < b) 大于等于(a >= b) 小于等于(a <= b)

每个比较运算都返回了一个标识表达式是否成立的布尔值:

1 == 1   // true2 != 1   // true2 > 1    // true1 < 2    // true1 >= 1   // true2 <= 1   // false
7.逻辑运算符

逻辑运算的 *** 作对象是逻辑布尔值。Swift 支持基于 C 语言的三个标准逻辑运算。

逻辑非运算(!a)对一个布尔值取反,使得true变false,false变true。 逻辑与(a && b)表达了只有a和b的值都为true时,整个表达式的值才会是true。 逻辑或(a || b)它表示了两个逻辑表达式的其中一个为true,整个表达式就为true。 8.三目运算符

三目运算符的格式为:

Expression? if-true-statement: if-false-statement

如果逻辑表达式Expression为真则执行并返回第二个 *** 作数的值; 如果不为真则执行并返回第三个 *** 作数的值。

var a = 5var b = 3var str = a > b ? "a大于b" : "a不大于b"// 输出"a大于b"print(str)
9.nil合并运算符

nil合并运算符:??,它的格式如下:

a ?? b

简单来说就是如果a为nil,则程序会返回b的值

let dfstr="九阴真经"var str:String?// 输出"九阴真经"print(str ?? dfstr)
总结

以上是内存溢出为你收集整理的swift 03 运算符全部内容,希望文章能够帮你解决swift 03 运算符所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存