Java 为什么可以';赋值运算符中的变量不能递增吗?

Java 为什么可以';赋值运算符中的变量不能递增吗?,java,compiler-construction,variable-assignment,modulus,Java,Compiler Construction,Variable Assignment,Modulus,作为前言,我在Mint 12x64上使用eclipse 3.7.2 假设您有给定的字段: tail = 10; capacity = 10; 现在假设您要执行以下语句: tail++ %= capacity; 为什么这个声明是非法的?这句话含糊不清吗?在我看来,它的评估顺序如下: 尾=模量容量 尾部增加1 表达式tail++的结果是一个值,而不是一个变量。从JLS第节: 后缀增量表达式的结果不是一个变量,而是一个值 您不能只为变量(或字段)赋值。您的示例无法编译的原因是tail++是值,而

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

假设您有给定的字段:

tail = 10;
capacity = 10;
现在假设您要执行以下语句:

tail++ %= capacity;
为什么这个声明是非法的?这句话含糊不清吗?在我看来,它的评估顺序如下:

  • 尾=模量容量
  • 尾部增加1

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

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


您不能只为变量(或字段)赋值。

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

tail %= capacity;
tail++;

现在这是有道理的。该语句完全基于我的想法,即返回的变量不是变量的值。谢谢你的链接。