在如下的声明中:
if (valueA & valueB) != 99 {
print("they don't equal 99")
}
&
运营商做了什么?我认为这意味着如果valueA和valueB都不等于99执行该块。
然后|
在这句话中做了什么:
if valueA != (99 | 0) {
print("it doesn't equal 99")
}
我认为这意味着如果valueA不等于99或0执行该块。然而,我的假设似乎都不正确。
编写上述陈述的正确方法是:
if valueA != 99 && valueB != 99 {
print("it doesn't equal 99")
}
似乎合乎逻辑的是,提出的第一个if语句将是一种非常简洁的编写方式,因为它缩短了编写的代码,并且如果不是更多,仍然是显式的。
答案 0 :(得分:9)
这些都是Bitwise Operators,可以让你操纵实际的数据位。
以下信息按原样从官方文档中复制:
按位 AND 运算符(&
)组合了两个数字的位。只有当两个输入数字中的位等于1
时,它才会返回一个新的数字,其位设置为1
:
按位 OR 运算符(|
)比较两个数字的位。如果两个输入数中的位等于1
,则运算符返回一个新的数字,其位设置为1
:
答案 1 :(得分:1)
这些运营商执行bitwise arithmetic。
按位AND采用两个相等长度的二进制表示,并通过将它们相乘对每对相应位执行逻辑AND运算。因此,如果比较位置中的两个比特都是1,则得到的二进制表示中的比特是1(1×1 = 1);否则,结果为0(1×0 = 0且0×0 = 0)。
按位OR采用相等长度的两个位模式,并对每对相应位执行逻辑包含OR运算。如果两个位都为0,则每个位置的结果为0,否则结果为1。