【问题标题】:Java Operator: |= [duplicate]Java 运算符:|= [重复]
【发布时间】:2013-09-07 20:47:12
【问题描述】:

我刚刚在一些源代码中遇到了以下行。

int sequ |= element.sequence

运算符 |= 是什么意思?我以前没见过。

【问题讨论】:

标签: java operators


【解决方案1】:

=|compound assignment operator,类似于 +=-=/=*=,但使用按位或代替。

这相当于:

sequ = (int) (sequ | element.sequence);

其中| 是按位或运算,这意味着它将左操作数中的所有位与右操作数中的所有位独立地进行或运算,以获得结果。如果element.sequence 已经是int,则不需要强制转换。

注意:您的原始代码没有意义:

int sequ |= element.sequence

你不能在那里声明它,然后和或它与其他东西。它需要在之前声明和分配,例如:

int sequ = 0; /* or some other value */
sequ |= element.sequence;

【讨论】:

  • @WalterM 根据Java language specE1 op= E2 (T) ((E1) op (E2)),这与我所说的几乎相同,可能是演员表LHS 类型。如果您实际上是在谈论在 element.sequence 不是 int 的情况下强制转换为 int,那么留下一个不那么神秘的评论会很好。另外,要回答“如果它们真的是等价的,那我们为什么需要两者?”,如果我们可以手动分配总和,为什么我们需要+=
【解决方案2】:

它是以下形式的缩写:

int sequ  = sequ | element.sequence;

类似于+=-=,只是它是按位或运算符。

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 2011-11-06
    • 2014-05-10
    • 1970-01-01
    • 2023-03-29
    • 2011-04-15
    • 2012-05-26
    • 2010-10-02
    • 2014-09-29
    相关资源
    最近更新 更多