01-布尔类型
2 分钟阅读
译文 · 基于 The Rust Reference
原文链接: https://doc.rust-lang.org/reference/types/boolean.html
r[type.bool]
布尔类型
| |
r[type.bool.intro] 布尔类型或 bool 是一种基本数据类型,只能取两个值之一,分别称为 true 和 false。
r[type.bool.literal]
该类型的值可以用字面量表达式创建,关键字 true 和 false 对应同名的值。
r[type.bool.namespace]
该类型属于语言 prelude,其名称为 bool。
r[type.bool.layout] 布尔类型对象的大小和对齐均为 1。
r[type.bool.repr]
false 的位模式为 0x00,true 的位模式为 0x01。布尔类型对象具有任何其他位模式都是未定义行为。
r[type.bool.use] 布尔类型是多种表达式中许多操作数的类型:
r[type.bool.use-in-condition]
r[type.bool.use-in-lazy-operator]
- 惰性布尔运算符表达式中的操作数
注意 布尔类型的行为与枚举类型类似,但并不是枚举类型。实践中,这主要意味着构造函数并不关联到该类型(例如没有
bool::true)。
r[type.bool.traits]
与所有基本类型一样,布尔类型实现了 trait Clone、Copy、Sized、Send 和 Sync。
注意 库层面的操作见标准库文档。
r[type.bool.expr]
布尔值上的运算
当某些运算符表达式的操作数是布尔类型时,它们按布尔逻辑的规则求值。
r[type.bool.expr.not]
逻辑非
b | !b |
|---|---|
true | false |
false | true |
r[type.bool.expr.or]
逻辑或
a | b | a | b |
|---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
r[type.bool.expr.and]
逻辑与
a | b | a & b |
|---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
r[type.bool.expr.xor]
逻辑异或
a | b | a ^ b |
|---|---|---|
true | true | false |
true | false | true |
false | true | true |
false | false | false |
r[type.bool.expr.cmp]
比较
r[type.bool.expr.cmp.eq]
a | b | a == b |
|---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | true |
r[type.bool.expr.cmp.greater]
a | b | a > b |
|---|---|---|
true | true | false |
true | false | true |
false | true | false |
false | false | false |
r[type.bool.expr.cmp.not-eq]
a != b等价于!(a == b)
r[type.bool.expr.cmp.greater-eq]
a >= b等价于a == b | a > b
r[type.bool.expr.cmp.less]
a < b等价于!(a >= b)
r[type.bool.expr.cmp.less-eq]
a <= b等价于a == b | a < b
r[type.bool.validity]
位有效性
bool 的那一个字节保证已初始化(换句话说,transmute::<bool, u8>(...) 总是健全的——但由于某些位模式不是合法 bool,反过来并不总是健全)。