【问题标题】:What's the point of the compound comparison operators?复合比较运算符的意义何在?
【发布时间】:2017-02-06 12:30:11
【问题描述】:

我读到b1 |= b2 是等同于b1 = b1 | b2 的快捷方式。我的问题实际上是双重的:

“=”不是赋值运算符而不是比较运算符吗?如果是这样,它在这种情况下会做什么?

或者,这里是比较运算符吗?在什么情况下需要将变量与自身进行比较(即b1 = b1)?

(我意识到这可能是要问的新手问题,但我只有编写 bash 脚本的非正式经验,没有编程方面的教育背景。善良。;)

注意:这里指的是问题:Shortcut "or-assignment" (|=) operator in Java

【问题讨论】:

  • |= 不是复合比较运算符。
  • 没有复合比较运算符,只有复合赋值运算符。
  • 这是一个布尔值,如果 b1 或 b2 为真,则 b1 为真?
  • @BackSlash 您认为如何使用|= 的短路形式?我的意思是,假设 ||= 确实存在,您将如何以有意义的方式使用它?
  • @BackSlash 错误。管道运算符| 用于按位和逻辑或。双管道运算符只用于逻辑,a | ba || b在布尔运算符的区别是第一个不是短路,第二个是。

标签: java comparison operators shortcut


【解决方案1】:

Java 中有很多运算符。但是“复合比较运算符”不是其中之一。您应该从像“Head first Java”这样的好书中阅读 Java 基础知识。

要回答这个特定问题,b1 |= b2 是复合赋值。

  1. =b1|b2 的结果分配给 LHS 操作数,即 b1
  2. 既然现在很清楚它是一个assignment 运算符而不是比较,那么b1 |= b1 的结果将与b1 = b1|b1 相同。

(注意|这里是两个数字之间的逻辑OR而不是||,这是一个条件运算符。|||有不同的含义)

HTH。

【讨论】:

  • 感谢您的澄清。你的意思是写b1 = b1|b2 而不是b1 = b1|b1
  • 我的意思是b1 = b1|b1,在回答您的第二个问题时,您怀疑双方都使用了相同的变量。
猜你喜欢
  • 2016-11-12
  • 2015-05-29
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多