i++
是对变量的赋值i
。
在您的情况下,zero++
等效于zero = zero + 1
. 所以0++
意味着0 = 0 + 1
,这没有任何意义,以及getInt() = getInt() + 1
。
更精确地 :
int oneA = zero++;
方法
int oneA = zero;
zero = zero + 1; // OK, oneA == 0, zero == 1
int oneB = 0++;
方法
int oneB = 0;
0 = 0 + 1; // wrong, can't assign value to a value.
int oneC = getInt()++;
方法
int oneC = getInt();
getInt() = getInt() + 1; // wrong, can't assign value to a method return value.
从更一般的角度来看,变量是L-value,这意味着它指的是内存位置,因此可以被分配。L in L -value 代表赋值运算符的左侧(即=
),即使 L 值可以在赋值运算符的左侧或右侧找到(x = y
例如)。
相反的是R 值(R代表赋值运算符的右侧)。R-values 只能用在赋值语句的右侧,将某些东西赋给 L-value。通常,R 值是文字(数字、字符串...)和方法。