//
// main.swift
// Swift-运算符
//
// Created by dingkang on 15/12/17.
// Copyright © 2015年 dingkang. All rights reserved.
//
import Foundation
//在Swift语言中,程序要对数据进行大量的运算,就必须利用运算符操纵数据。用来表示各种不同运算的符号成为运算符,由运算符和运算分量(操作数)组成的式子成为表达式。
//运算符是检查、改变、合并值的特殊符号或短语的统称。
//运算符的级别
//按运算符在表达式中与运算分量的关系(连接运算分量的个数),运算符可分位3种
//(1)一目运算符,即一元运算符,一目运算符对单一操作对象操作,如-3,!a
//一目运算符分前置运算符和后置运算符,前置运算符需紧排操作对象之前,如!b,后置运算符需紧跟操作对象之后,如i++。
//(2)二目运算符,即二元运算符,需要两个运算分量,如a+b,x||y。
//双目运算符操作两个操作对象,如2+3是中置,因为它们出现在两个操作对象之间。
//(3)三目运算符,即三元运算符,需要3个运算分量,如a>b?a:b。
//1.赋值运算符
//赋值运算符是用来给变量赋值的。它是双目运算符,用于将一个表达式的值送给一个变量。赋值运算符是一个基本的运算符(=)。
//在Swift中允许在赋值运算符“=”的 前面加上一些其他的运算符,以构成复合的赋值运算符。复合赋值运算符共有10种,分别位:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、!=。
//单元组赋值
let a = 5 //为常量a赋值为5
var b = 10 //为变量b赋值为10
b = a //将a的值又赋值给b,这是b的值为5
print(b)
运行结果:
//多元组赋值
let (x,y) = (1,2) //通过多元组为多元常量赋值
print(x) //x为1
print(y) //y为2
运行结果:
//字符串赋值运算
let apple = "a"
let banana = "b"
let fruit = apple + banana
print(fruit)
let hello = "hello,"
let world = "world"
let all = hello + world
print(all)
运行结果:
//求余运算
//正数求余
let m = 5%2
let n = 2%5
print("5对2取余数为\(m),2对5取余数为\(n)")
运行结果:
//负数求余
let aa = -5 % 2
let bb = 5 % -2
let cc = -5 % -2
print("-5对2取余数为\(aa),5对-2取余数为\(bb),-5对-2取余数为\(cc)")
运行结果:
//浮点数求余
let dd = 8%2.5
print("8对2.5求余结果为\(dd)")
运行结果:
//自增和自增运算
//和C语言一样,Swift也提供了方便对变量本身加1或减1的自增++和自减- -的运算符,其操作对象可以是整型和浮点型
var i = 0
++i
print(i)
运行结果;
//每调用一次++i,i的值就会加1,实际上++i是i= i+1的简写,而- -i是i= i-1的简写,++和- -既是前置又是后置运算。++i,i++,–i和i–都是有效的写法。
//++是自增运算符。如a++,++a,都等价于a = a + 1
//–是自减运算符。如a–,–a,都等价于a = a - 1
//++a和a++的区别
//(1)
var j = 10
j++
//(2)
var k = 20
++k
print("j的值为\(j),k的值为\(k)")
运行结果:
//单独使用++a和a++时,它们是没有区别的。(1)和(2)两段代码的效果都是让a的值+1,最后a的值都是原有的值自加了1
//(3)
var p = 50
var q = ++p
print("p的值为\(p)q的值为\(q)")
//(4)
var u = 60
var v = u++
print("u的值为\(u),v的值为\(v)")
运行结果:
//(3)和(4)两段代码的执行是有区别的
//(3)++p的意思是先对p执行+1的操作,再将p的值赋值给q,最后p和q的值都为51.
//(4)u++的意思是先将u的值复制出来一份,然后对u执行+1操作,于是u就变成了61,但是赋值出来的值还是60,u++运行完毕后,将赋值出来的值赋值给了v,所以最后变量v的值还是60,而变量u的值是61.
//单目负号和单目正号
//单目负号和单目正号又称为单目减加。单目减运算符相当于取反值,若是正值就变为负值,若是负值就变为正值。单目加运算符没有意义,纯粹是和单目减构成一对用的。
//数值的正负号可以使用前缀-(即单目负号)来切换
//单目负号
let two = 2
let minusTwo = -two //minusTwo = -2
let plusTwo = -minusTwo //plusTwo = 2
print("minusTwo的值为\(minusTwo),plusTwo的值为\(plusTwo)")
//单目正号
let minusFive = -5
let alsoMinusFive = +minusFive //alsoMinusFive = -5 前面的+符号不会影响minusFive的值
print("alsoMinusFive的值为\(alsoMinusFive)")
运行结果:
//复合赋值 (Swift也提供把其他运算符和赋值运算=相结合的复合赋值方式,也称作复合赋值运算符)
var nice = 5
nice += 5
print("nice的值为\(nice)")
运行结果:
/**
* 表达式中其他复合赋值运算符的方式如下
(1)+= 加赋值运算符。如 a += 3+2,等价于 a = a +(3+2)
(2)-= 减赋值运算符。如 a -= 3+2,等价于 a = a -(3+2)
(3)= 乘赋值运算符。如 a = 3+2,等价于 a = a *(3+2)
(4)/= 除赋值运算符。如 a /= 3+2,等价于 a = a /(3+2)
(5)%= 取余赋值运算符。如 a %= 3+2,等价于 a = a %(3+2)
*/