1.4.1 布尔值的概念
有时,我们说一个判断是对的,这意味着真。反之是假。
var a = (1 + 1 > 1)
print(a) // true
var b = (1 + 1 < 0)
print(b) //false
true
就是真,false
就是假。true
和false
统称为布尔值。
布尔类型的变量,值为true
或false
。
var x = true
var y = false
练习7
创建一个变量,名字为z
,值为true
。
将它显示到控制台。// 在这里添加代码 print(z) // true
难度:#
1.4.2 逻辑运算
布尔值与布尔值之间不能加减乘除,但有一套独特的运算方法。
1.4.2.1 非运算
非运算的形式为![值]
,优先级最高。
假变真,真变假。
var x = true
var y = !x // 非运算
print(y) // false
y = !y
print(y) // true
1.4.2.2 与运算
与运算的形式为[值] && [值]
。
类似于乘法,只要有一个假,则结果为假。
var T = true
var F = false
print(T && T) // true
print(F && T) // false
print(T && F) // false
print(F && F) // false
1.4.2.3 或运算
或运算的形式为[值] || [值]
。
类似于加法,只要有一个为真,则结果为真。
var T = true
var F = false
print(T || T) // true
print(F || T) // true
print(T || F) // true
print(F || F) // false
练习8
已知有布尔变量,x
和y
,值不确定。
现在设计一个运算流程,使result
按照以下规则被赋值:
输入的x 输入的y 得到的result T T F F T T F F F T F T 这不是很容易想,可以先在草稿纸上试一试。
在此基础上修改:var x = true // 或false var y = true // 或false // 在这里添加代码 print(result)
难度:##
1.4.3 比较运算
就像在本文开头的例子所演示,比较运算可以返回布尔值。
1.4.3.1 相等和不相等
运算符==
的作用是,如果两个值相等,则返回true,否则返回false。
var a = (1 == 0)
print(a) // false
对这个结果加上非运算,就相当于运算符!=
,判断两个值是否不相等。
var a = (1 != 0)
print(a) // true
1.4.3.2 比较大小
大于号和小于号,意思和常规理解一致。
print(1 > 2) // false
print(1 < 2) // true
在它们的前面加上等于号,意思是,若两者相等,也可以返回真值。
print(1 >= 2) // false
print(1 <= 2) // true
print(1 >= 1) // true
print(1 <= 1) // true
练习9
比较12 x 78
和34 x 56
哪个大。
用布尔值表示判断结果,并将它显示到控制台。如果左侧大,则返回true
,否则返回false
。
难度:#
1.4.4 三元条件运算
布尔值是一个很基础的概念,可以用到很多地方。本文举一个简单的例子。
请看以下代码:
var x = true
var result = (x ? "x是true" : "x是false")
print(result) // x是trye
另外,如果x
是false
,则返回另一个选项。
var x = false
var result = (x ? "x是true" : "x是false")
print(result) // x是false
所谓三元条件运算,就是[布尔值] ? [值1] : [值2]
,布尔值决定了表达式的返回值是值1
还是值2
。
练习10
已知布尔变量,x
,值不确定。
现在设计一个运算流程,使x
的值由true
变false
或由false
变true
。
如果对x
作非运算,可以很直接地实现。var x = true // 或false var result = !x print(result)
如果不用非运算却实现完全相同的效果,如何?
在此基础上修改:var x = true // 或false // 在此处添加代码 print(result)
难度:##
参考答案
练习7
var z = true
print(z) // true
练习8
这只是一种方案。实际上也可以用三元运算符完成这个运算流程。
var x = true // 或false
var y = true // 或false
// 注意到,当x和y的值相同时,result为false,否则为true
var a = x || y
var b = x && y
var c = !b
var result = a && c
练习9
var result = (12 * 78 > 34 * 56)
print(result) // false
练习10
var x = true // 或false
var result = x ? false : true
print(result)