我今天遇到了这段代码:
indexValid &= x >= 0;
& =是什么意思?有人可以解释一下这个陈述中发生了什么吗?
答案 0 :(得分:8)
这不是关于Objective-C,而是关于Objective C.,
此处&=
运算符的语句等同于indexValid = indexValid & (x >= 0)
。
&
运算符本身称为按位和运算符,AND
是操作数。这意味着,仅当两个操作数均为1
时才返回1
,否则如果任何操作数不是0
则返回1
。 AND
和OR
通常用于设置软件中的标记。
例如,如果indexValid
为二进制0011010
而AND
为(x >= 0)
(这是一个布尔表达式结果,1或0),结果是0000000
并且(让我们说x> = 0评估为1),因为0011010 & 0000001
评估为0000000
。
如果您不了解二进制逻辑,http://en.wikipedia.org/wiki/Boolean_logic是一个很好的起点。
答案 1 :(得分:2)
bitwise AND
加assignment operator
(或'和累积')。
它将bitwise AND
与左侧操作数组合,并赋值给所述操作数。
x&= y;
是
x= x & y;