【问题标题】:Why can't a variable be incremented in an assignment operator?为什么不能在赋值运算符中增加变量?
【发布时间】:2013-03-17 20:46:50
【问题描述】:

作为前言,我在 Mint 12x64 上使用 eclipse 3.7.2

假设你有给定的字段:

tail = 10;
capacity = 10;

现在假设你要执行这个语句:

tail++ %= capacity;

为什么该声明是非法的?陈述是否模棱两可?对我来说,它似乎会按以下顺序进行评估:

  • tail = 模容量
  • 尾部增加一

【问题讨论】:

    标签: java compiler-construction variable-assignment modulus


    【解决方案1】:

    表达式tail++ 的结果是一个,而不是一个变量。来自 JLS,15.14.2 部分:

    后缀自增表达式的结果不是变量,而是值。

    您不能分配给一个值,只能分配给一个变量(或字段)。

    【讨论】:

    • 现在说得通了。该声明完全基于我的想法,即返回变量而不是变量的值。感谢您的链接。
    【解决方案2】:

    您的示例无法编译的原因是因为tail++ 是一个,而不是一个变量++ 运算符接受一个变量(并将其递增),然后返回一个 value,然后您尝试将其分配给该变量。您只能分配给变量,因此会出现编译器错误。如果您想让您的示例工作,您可以尝试:

    tail %= capacity;
    tail++;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-28
      • 2021-09-14
      • 1970-01-01
      • 2014-10-11
      • 1970-01-01
      • 2021-09-26
      • 2014-08-25
      相关资源
      最近更新 更多