【问题标题】:Java math with two consecutive operators具有两个连续运算符的 Java 数学
【发布时间】:2011-11-18 16:03:50
【问题描述】:

我最近在调试一个结果比预期大得多的问题。我本来打算写的是:

y += height + rowHeight * 2;

我写的是

y += height * + rowHeight * 2;

我没有立即看到错误,因为* + 显然是 Java 或至少 Android java 中的有效运算符。我以前从未听说过这件事,也不知道这意味着什么。

作为一个实验,我发现这个的广义形式是,作为一个正则表达式[*/%][+-]*

它看起来像是某种形式的波兰符号,但我不知道 Java 支持这种形式。

那么...我在哪里可以找到有关此运算符的文档,以及它的确切含义是什么?

【问题讨论】:

  • 你只是在强迫rowHeight 是积极的。 *+ 不是操作员。

标签: java android operators


【解决方案1】:

它使用 一元加号运算符 - 所以它是这样的:

y += height * (+rowHeight) * 2;

举一个看起来一点都不奇怪的例子,但是使用一元减号而不是一元加号:

y += height * -rowHeight * 2;

希望这更有意义:)

【讨论】:

  • 完全现在说得通了!
【解决方案2】:

+ 在这里只是一个正号(一元运算符)。你可以像这样重写它:

y += height * (+ rowHeight) * 2;

用java写这个也是有效的:

int x = +-+-+-+- 5;

【讨论】:

  • 这会导致什么? -5 还是 5?或者,现在是语法错误吗?
【解决方案3】:

编译器将表达式视为运算符 y += height * (+ rowHeight) * 2;

【讨论】:

    【解决方案4】:

    +- 也是一元运算符,否则你不能写这样的东西:

    int n = -1;
    int x = +42;
    

    【讨论】:

      猜你喜欢
      • 2014-09-30
      • 2018-09-26
      • 2022-01-09
      • 1970-01-01
      • 2015-08-15
      • 2012-08-04
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多