Swift(三)基本运算符

Swift支持大部分标准C语言的运算符,并且对许多特性进行改进来减少常规编码的错误。除了支持基本运算符外,Swift还提供了2个特殊的运算符,分别是:溢出运算符和区间运算符

首先看下基本运算符

import UIKit

var str = "Hello, playground"

/**
 赋值运算符
 1. 注意??:与C语言和OC不同,Swift的赋值操作并不返回任何值。
    这个特性是你无法把(==)错写成 (=)
 */
let b = 10
var a = b
//if a = b {
//    // c这样写错误,因为 a = b 并不返回任何值
//}

/**
 算术运算符
 1.Swift中所有数值类型都支持基本的四则算术运算符
 2.注意??:swift默认情况下不允许在数值计算中出现溢出情况。可以使用溢出运算符实现溢出计算
 3.加法运算符 也可用于 String的拼接
 */
print(1 + 2)
print(10 - 3)
print(3 * 7)
print(27.0 / 3.0)
print("hello, " + "world") // "hello, world"

/**
 求余运算符
 1. a % b 求余运算符 % 在有的语言中也叫 取模运算符
 2. 在对负数b求余时,b的符号会被忽略。这意味着 a % b 和 a % -b的结果相同
 */
print(9 % 4)// 等于1
print(-9 % 4)// 等于-1
print(9 % -4)// 等于1

/**
 一元负号运算符
 */
let four = 4
let tempFour = -four

/**
 一元正号运算符
 该运算符 不做任何改变地返回操作数的值
 */
let mSix = -6
let alsoMsix = +mSix// 等于 -6

/**
 组合运算符
 将其它运算符和赋值运算符(=)组合的f组合运算符
 注意??:复合赋值运算符没有返回值 let m = n += 4 这类代码是错误
 */
var n = 2
n += 3
print(n)

//let m = n += 5
//print(m)// 结果是 ()

/**
 比较运算符
 1. 所有标准C语言中的比较运算符都可以在Swift中使用
 2. 每个比较运算符返回了一个标识表达式是否成立的布尔值
 3. swift提供了恒等(===)和不恒等(!==)这两个比较符来判断两个对象是否
    引用同一个对象实例
 4. 元组比较:如果两个元组的元素相同,且长度相同的话,元组就可以被比较
            比较元组大小会按照从左到右、逐值比较的方式,知道发现两个值不等时停止
            如果所有的值都相等,那么这一对元组就相等
    注意??:swift标准库只能b比较7个以内元素的元组比较
 */
print(2 != 1)// true
print((1, "dog") < (3, "banner"))// true 因为1小于3,所以整个元组就是小于的,不管元组剩下的值如何
print((4, "dog") < (4, "banner"))// false 当异地个元素相同的时候,第二个元素就会用做比较

/**
 三目运算符
 */
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 30)

/**
 空合运算符
 a ?? b 将对可选类型a进行空判断,如果a包含一个值就进行解封,否则返回一个默认值b
 注意??:表达式a必须是可选类型。默认值b的类型必须和a类型一致
 */
let defaultColorName = "red"
var userDefinedColorName: String?// 默认值为nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
print(colorNameToUse)
userDefinedColorName = "blue"
colorNameToUse = userDefinedColorName ?? defaultColorName
print(colorNameToUse)

/**
 逻辑运算符
 逻辑运算符的操作对象是逻辑布尔值。
 逻辑非 (!a)
 逻辑与(a && b)
 逻辑或(a || b)
 */
let allowedEntry = false
if !allowedEntry {
    print("ACCESS DENIED")
}

let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}

let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}

区间运算符

/**
 1. 闭区间运算符
 (a...b)定义一个包含从a到b的所有值的区间,a值不能超过b
 */
for index in 1...6 {
    print(index)// 1 2 3 4 5 6
}
/**
 2. 半开区间运算符
 (a..<b)定义一个包含从a到b但不包括b的区间
 */
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("第 \(i + 1) 个人叫 \(names[i])")
}
/**
 3. 单侧区间
 可以表达往一侧无限延伸的区间
 */
for name in names[2...] {
    print(name)// Brian Jack
}

溢出运算符

//溢出运算符
var am = UInt8.max //am = 255
//Error: -> var b:UInt8 = am + 1 //注意b会出现溢出,此句报错
//下面使用溢出运算符,结果为:0
var bm:UInt8 = UInt8(a &+ 1)
//类似的还有&-、&*、&/,使用溢出运算符可以在最大值和最小值之前循环而不会报错,下面c的值为255
var c:UInt8 = UInt8(bm &- 1)

原文地址:https://www.cnblogs.com/wanli-leon/p/11146866.html

时间: 2024-07-29 09:49:37

Swift(三)基本运算符的相关文章

Swift的基本运算符

今天学习了Swift语言的最基本的知识,以下是本人的一些认识与小结,希望能帮助更多人的区理解,如有不妥的地方望大家指出,以便及时更正. 基本运算符 运算符是一种特殊的符号或短语,你可以用它来检查,改变,或组合值. 运算符都是一元,二元或者三元: 一元运算符操作单个对象主要有:前缀操作符 (如 -a,!a)和后缀操作符在对象后出现 (如 i++,i--). 二元运算符操作两个对象且在两对象之间,主要有:-,+,*,/,%,<,>,=.(如 a-b, a+b, a*b, a/b, a%b, a&l

李洪强iOS开发Swift篇—04_运算符

李洪强iOS开发Swift篇—04_运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运算符:++.-- 比较运算符:==.!=.>.<.>=.<= 逻辑运算符:&&.||.! 三目运算符:? : 范围运算符:..< .... 溢出运算符:&+.&-.&*.&/.&% 2.赋值运算符 (1)1对1赋值 var

Mysql学习笔记(三)运算符和控制流函数

原文:Mysql学习笔记(三)运算符和控制流函数 本章学习内容: 1.操作符 2.控制流程函数 操作符: i.圆括号.. 简单的介绍一下圆括号,圆括号的使用的目的是规定计算表达式的顺序...这个想必大家都熟悉例如  mysql>select 1+(2*3) mysql>select (1+2)*3 ii.比较运算符. 比较运算符就比较多了,并且也很常用..比如 = 等于: mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -&g

ES6扩展运算符(三点运算符)“...”用法和对象拷贝

es6拷贝数组对象有以下方法: 方法一: Object.assign() // 对象浅拷贝,obj1复制给obj2,这种方法要把obj2设置为{},不能const obj2 = ""; const obj1 = {a: 1}; const obj2 = {}; Object.assign( obj2, obj1) 方法二 :ES6扩展运算符(...) //对象浅拷贝,obj1复制给obj2 const obj1 = {a: 1}; const obj2 = {...obj1}; 方法三

C#流程控制语句--分支语句(if,switch,三位运算符)

分支语句  if if(判断条件表达式) {//表达式结果为ture时执行} else {//表达式结果为false时执行} For example Console.WriteLine("请输入一个数字:"); int iInput = Convert.ToInt32(Console.ReadLine());//记录用户的输入 if (iInput % 2 != 0)//使用if语句进行判断 { Console.WriteLine(iInput + " 是一个奇数!"

第三章.运算符

在Swift中你可以对浮点数进行取余运算( % ) 术语 运算符有一目, 双目和三目运算符. 一目运算符对操作一个对象, 如 -a. 一目运算符分为前置运算符和后置运算符, 前置运算符需紧排操作对象之前, 如 !b, 后置运算符需紧跟操作对象之后,如 i++, 双目运算符操作两个操作对象, 如 2 + 3. 是中置的, 因为它们出现在两个操作对象之间. 三目运算符操作三个操作对象, 和C语言一样, Swift只有一个三目运算符, 就是三目条件运算符 a ? b : c. 受运算符影响的值叫操作数

Swift教程之运算符重载

原文地址:http://www.raywenderlich.com/80818/operator-overloading-in-swift-tutorial 作者:Corinne Krych  译者:孟祥月 blog:http://blog.csdn.net/mengxiangyue 这篇文章是本人第一次翻译,难免有错误,翻译的时候使用的是txt,所以格式上面有些不太好. 在早前的IOS 8盛宴系列的教程里,你已经了解到,Swift提供了许多强大的.现代的编程特性,比如泛型.函数式编程.一等类型

Swift数据类型、运算符、新增语句等小结

总结复习一些基本的东西,主要是与OC不同的以及新增的. 一.基本数据类型 Int.Float.Double.Bool.Character.String(首字母都大写) Array.Dictionary.元组类型(Tuple).可选类型(Optional) 指定数据类型: [javascript] view plaincopy let a:Int = 10  //指定数据类型. 一般不需要指定,会自动判断类型. (使用时需初始化) 1.1 整形 [javascript] view plaincop

【iOS】Swift数据类型、运算符、新增语句等小结

总结复习一些基本的东西,主要是与OC不同的以及新增的. 一.基本数据类型 Int.Float.Double.Bool.Character.String(首字母都大写) Array.Dictionary.元组类型(Tuple).可选类型(Optional) 指定数据类型: let a:Int = 10 //指定数据类型. 一般不需要指定,会自动判断类型. (使用时需初始化) 1.1 整形 //1.1整形 let maxInt = Int.max //获取Int类型的最大值 let minInt =