Java 为什么可以';赋值运算符中的变量不能递增吗?
作为前言,我在Mint 12x64上使用eclipse 3.7.2 假设您有给定的字段: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++是值,而
tail = 10;
capacity = 10;
现在假设您要执行以下语句:
tail++ %= capacity;
为什么这个声明是非法的?这句话含糊不清吗?在我看来,它的评估顺序如下:
- 尾=模量容量
- 尾部增加1
tail++
的结果是一个值,而不是一个变量。从JLS第节:
后缀增量表达式的结果不是一个变量,而是一个值
您不能只为变量(或字段)赋值。您的示例无法编译的原因是
tail++
是值,而不是变量。++
运算符获取一个变量(并使其递增),然后返回一个值,然后尝试分配给该值。您只能分配给变量,因此会出现编译器错误。如果您想让您的示例发挥作用,您可以尝试:
tail %= capacity;
tail++;
现在这是有道理的。该语句完全基于我的想法,即返回的变量不是变量的值。谢谢你的链接。