【问题标题】:What does &= mean in objective c?&= 在目标 c 中是什么意思?
【发布时间】:2014-09-11 08:05:15
【问题描述】:

我今天遇到了这段代码:

indexValid &= x >= 0;

&= 是什么意思?有人能解释一下这个声明中发生了什么吗?

【问题讨论】:

标签: objective-c


【解决方案1】:

它是bitwise AND 加上assignment operator(或“和累积”)。

它将bitwise AND 与左侧操作数相结合,并对所述操作数赋值。

x&= y;

x= x & y; 

【讨论】:

    【解决方案2】:

    这不是关于 Objective-C,而是普通 C。

    这里带有&= 运算符的语句等效于indexValid = indexValid & (x >= 0)& 运算符本身称为按位与运算符,ANDs 称为操作数。这意味着,仅当两个操作数都是 1 时才返回 1,否则如果任何操作数不是 1,则返回 0ANDing 和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 吗?
    • 是的,但我通过 Can 的回答更了解了解决方案。没有什么私人的:)
    • @guy8214:他的回答确实更好:)
    猜你喜欢
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2016-12-18
    • 1970-01-01
    • 2012-12-11
    • 2017-05-07
    相关资源
    最近更新 更多