【问题标题】:What does * in front of = mean? [duplicate]=前面的*是什么意思? [复制]
【发布时间】:2018-11-30 23:27:49
【问题描述】:

大家好,我有一个非常简单的问题,我就是不明白。我试过谷歌搜索,但没有找到明确的答案。

以下语句后面的 x 是什么?

int x = 2;
int y = 1;
x *= y + 1;

我知道答案是 4,但我不明白为什么是 4。只是需要弄清楚 x* 的确切含义。谢谢!

【问题讨论】:

  • x = x * y + 1x = 2 * 1 + 1x = 2 * 2x = 4
  • 如果您知道x += y 的含义,那么x -= yx *= yx /= yx %= y 都应该是直观的。见Compound assignment operators in Java

标签: java logic assign


【解决方案1】:

我认为这就是你问的原因

x *= y + 1;

这是

的简写
x = x * (y + 1);

这也适用于其他运算符,如 - 和 +,当第一个变量与左侧的变量相同时(将被分配)。

【讨论】:

    【解决方案2】:

    当然x是4,如果你看不懂最后一条语句,可以这样看

    x = x * y + 2
    

    【讨论】:

      【解决方案3】:

      x*= 符号表示 x=x* 是您在等号之后放置的任何内容的结果。

      x*= y+1 将变为x = x * (y+1)。你放在equals之后的表达式首先被评估,然后乘以x。结果将转换为赋值变量 (x) 的类型。

      【讨论】:

      • 其实不是这个意思。 1)有一个类型转换,2)你忽略了运算符优先级。事实上,x *= <expr>; 真正的意思是x = (<type.of.x>)(x * (<expr>));。是的,在某些情况下类型转换和/或优先级很重要。
      • @StephenC 更新了我的答案。
      猜你喜欢
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 2023-04-03
      • 2019-05-14
      • 1970-01-01
      相关资源
      最近更新 更多