布尔类型
#![allow(unused)] fn main() { let b: bool = true; }
布尔类型 或 bool
是一种原始数据类型,可以取两个值中的一个,分别称为 true 和 false。
此类型的值可以使用字面量表达式创建,使用关键字 true
和 false
,它们分别对应同名的值。
此类型是语言 prelude 的一部分,名称为 bool
。
布尔类型的对象的大小和对齐方式均为 1 字节。
值 false
的位模式为 0x00
,值 true
的位模式为 0x01
。如果布尔类型的对象具有任何其他位模式,则是未定义行为。
布尔类型是各种表达式中许多操作数的类型。
- 惰性布尔运算符表达式中的操作数。
注意:布尔类型的行为类似于但不是枚举类型。实际上,这主要意味着构造函数不与该类型关联(例如
bool::true
)。
像所有原始类型一样,布尔类型实现了 traits Clone
、Copy
、Sized
、Send
和 Sync
。
注意:有关库操作,请参阅标准库文档。
布尔值上的操作
当对布尔类型的操作数使用某些运算符表达式时,它们会根据布尔逻辑的规则进行求值。
逻辑非
b | !b |
---|---|
true | false |
false | true |
逻辑或
a | b | a | b |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
逻辑与
a | b | a & b |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
逻辑异或
a | b | a ^ b |
---|---|---|
true | true | false |
true | false | true |
false | true | true |
false | false | false |
比较
a | b | a == b |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | true |
a | b | a > b |
---|---|---|
true | true | false |
true | false | true |
false | true | false |
false | false | false |
a != b
与!(a == b)
相同
a >= b
与a == b | a > b
相同
a < b
与!(a >= b)
相同
a <= b
与a == b | a < b
相同
位有效性
bool
的单个字节保证已初始化(换句话说,transmute::
始终是安全的 – 但由于某些位模式对于 bool
无效,因此反向操作不一定总是安全的)。