【发布时间】:2014-09-11 08:05:15
【问题描述】:
我今天遇到了这段代码:
indexValid &= x >= 0;
&= 是什么意思?有人能解释一下这个声明中发生了什么吗?
【问题讨论】:
-
不是反对者,但我猜,
Bit-wise-AND和assignment也是。
标签: objective-c
我今天遇到了这段代码:
indexValid &= x >= 0;
&= 是什么意思?有人能解释一下这个声明中发生了什么吗?
【问题讨论】:
Bit-wise-AND 和 assignment 也是。
标签: objective-c
它是bitwise AND 加上assignment operator(或“和累积”)。
它将bitwise AND 与左侧操作数相结合,并对所述操作数赋值。
x&= y;
是
x= x & y;
【讨论】:
这不是关于 Objective-C,而是普通 C。
这里带有&= 运算符的语句等效于indexValid = indexValid & (x >= 0)。
& 运算符本身称为按位与运算符,ANDs 称为操作数。这意味着,仅当两个操作数都是 1 时才返回 1,否则如果任何操作数不是 1,则返回 0。 ANDing 和ORing 常用于在软件中设置标志。
例如,如果indexValid 在二进制中是0011010,而您将AND 与(x >= 0)(这是一个布尔表达式结果,1 或0)结合起来,则结果是0000000 和(假设x >= 0 计算为 1),因为 0011010 & 0000001 计算为 0000000。
如果您不了解二进制逻辑,http://en.wikipedia.org/wiki/Boolean_logic 是一个不错的起点。
【讨论】:
0011010 & 0000001 不应该评估为 0 吗?