Swift学习—运算符

知识点:

  1. Swift范围运算符:..< {表示[x, y), 即大于等于x,小于y} , ... {表示[x, y], 即大于等于x,小于等于y} (主要用于for循环中)
  2. Swift溢出运算符(注意:是为整型计算提供的):&+, &-, &*, &/, &%
  3. Swift支持N对N赋值
  4. Swift赋值是没有返回值的
  5. %在Swift中叫“求余运算符”,求余结果的正负跟%左边数值的正负一样
  6. Swift的%还支持浮点的计算
  7. Bool类型类似于java中的boolean,只有两种取值true和false
  8. 在C中非零即为真,而Swift中没有这个概念
  9. if中的条件必须为Bool类型

示例代码:

//: Playground - noun: a place where people can play

import UIKit

// Swift中新增加的运算符
// 范围运算符
// ..< {表示[x, y), 即大于等于x,小于y} , ... {表示[x, y], 即大于等于x,小于等于y} (主要用于for循环中)

// 溢出运算符
// &+, &-, &*, &/, &%

// 1、Swift支持N对N赋值
let (x, y) = (1, 2)  // 即x被赋值为1,y被赋值为2,并且均为常量

// 2、Swift赋值是没有返回值的
// 下面的代码是错误的,因为x = y并没有返回相应的值
// if (x = y) {}

// 3、%在Swift中叫“求余运算符”
9 % 4    // 1
-9 % 4   // -1
9 % -4   // 1
-9 % -4  // -1
// 求余结果的正负跟%左边数值的正负一样

// Swift的%还支持浮点数的计算
8 % 2.5  // 0.5

// 4、Bool类型类似于java中的boolean类型,只有两种取值true和false
// 在C中非零即为真,而在Swift中没有这种概念
// if中的条件必须是Bool类型的值
// 下面的写法错误
// if (1){}
// 下面的写法正确
if (true) {
    println("条件成立")
}

// 5、范围运算符,..<和...
for i in 0..<5 {
    println(i)
} // 输出结果 0到4

for i in 0...5 {
    println(i)
} // 输出结果 0到5

// 6、Swift为整型计算提供了5个&开头的溢出运算符,能对超出取值范围的数值进行灵活处理
// 注意:这里是为整型计算提供的
let n = UInt8.max
let m = n &+ 1

let n1 = UInt8.min
let m1 = n1 &- 1
时间: 2024-10-10 23:09:33

Swift学习—运算符的相关文章

Swift学习笔记七:闭包

闭包可以 捕获 和存储其所在上下文中任意常量和变量的引用. Swift 会为您管理在 捕获 过程中涉及到的内存操作. 在 函数 章节中介绍的全局和嵌套函数实际上也是特殊的闭包,闭包采取如下三种形式之一: 1. 全局函数是一个有名字但不会捕获任何值的闭包 2. 嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包 3. 闭包表达式是一个可以捕获其上下文中变量或常量值的没有名字的闭包 一.闭包表达式 闭包函数类似于Objective-C中的block.下面我们用事实说话: let counts =

SWIFT学习笔记03

1.断言 let age = -3 assert(age >= 0, "A person's age cannot be less than zero") // 因为 age < 0,所以断言会触发 2.Swift赋值符(=)不返回值,以防止把想要判断相等运算符(==)的地方写成赋值符导致的错误.数值运算符(+,-,*,/,%等)会检测并不允许值溢出. 3.在对负数b求余时,b的符号会被忽略.这意味着 a % b 和 a % -b的结果是相同的,但-a是不一样的. 4.不同

Swift学习笔记(5)--数组

数组的下标从0开始计数,相关方法属性涉及到下标时也从0开始计数 1.定义: //1.可变数组 var cityArray = ["Portland","San Francisco","Cupertino"] //2.不可变数组 let cityArray2 = ["Portland","San Francisco","Beijing"] //3.空数组 var animalArray =

Swift 学习-多线程

1:第一种多线程 func fun1(){ for i in 200...300{ NSLog("%d",i); } } func fun2(){ for i in 300...400{ NSLog("%d",i); } } var th1 = NSThread(target:self,selector:"fun1",object:nil); th1.start(); //开启线程 NSThread.detachNewThreadSelector

SWIFT学习笔记05

1.Swift 无需写break,所以不会发生这种贯穿(fallthrough)的情况.2.//用不到变量名,可用"_"替换 for _ in 1...power { answer *= base } 3.case 可以匹配更多的类型模式,包括区间匹配(range matching),元组(tuple)和特定类型的描述. 可以这样用case case 1...3: naturalCount = "a few" 4.如果存在多个匹配,那么只会执行第一个被匹配到的 ca

SWIFT学习笔记02

1.//下面的这些浮点字面量都等于十进制的12.1875: let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalDouble = 0xC.3p0//==12+3*(1/16) 2.//类型别名,用typealias关键字来定义类型别名 typealias AudioSample = UInt16 var maxAmplitudeFound = AudioSample.min 3.//元组 let ht

swift学习笔记(三)关于拷贝和引用

在swift提供的基本数据类型中,包括Int ,Float,Double,String,Enumeration,Structure,Dictionary都属于值拷贝类型. 闭包和函数同属引用类型 捕获则为拷贝.捕获即定义这些常量和变量的原作用域已不存在,闭包仍然可以在闭包函数体内引用和修改这些值 class属于引用类型. Array的情况稍微复杂一些,下面主要对集合类型进行分析: 一.关于Dictionary:无论何时将一个字典实例赋给一个常量,或者传递给一个函数方法时,在赋值或调用发生时,都会

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

Swift 高级运算符

除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和Objective-C中的位运算符和移位运算. 不同于C语言中的数值计算,Swift的数值计算默认是不可溢出的.溢出行为会被捕获并报告为错误.你是故意的?好吧,你可以使用Swift为你准备的另一套默认允许溢出的数值运算符,如可溢出加&+.所有允许溢出的运算符都是以&开始的. 自定义的结构,类和枚举,是否可以使用标准的运算符来定义操作?当然可以!在Swift中,你可以为你创建的所有类型定制运算符的操作. 可定制的运