3

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

假设您有给定的字段:

tail = 10;
capacity = 10;

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

tail++ %= capacity;

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

  • 尾部 = 模量容量
  • 尾部加一
4

2 回答 2

6

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

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

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

于 2013-03-27T16:46:51.773 回答
5

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

tail %= capacity;
tail++;
于 2013-03-27T16:47:44.983 回答