需要帮助理解奇怪的数组语法
我在一本书中发现了这一点,我不知道它做了什么:
int index = 1; ... getArray() [index=2]++;
[指数= 2] ++; 看起来很奇怪,但编译。 更奇怪的是,如果删除++ ,它就变为无效,即使据我所知, ++在这种情况下什么都不做(值总是2)。
那么,在这种情况下,后增量运算符的重点是什么(因为它不会增加值),为什么括号和为什么只有在最后添加post-inc时语句才合法?
有人可以解释这个神秘的语法是什么以及它的作用是什么?
让我们打破那段代码:
getArray() [index=2]++;
相当于:
int[] someArray = getArray(); // Assume that's an int[] index = 2; someArray[index]++;
最后一行相当于:
someArray[index] = someArray[index] + 1;
如果删除该++
,则第二个表达式不是有效语句。 它变成了:
getArray() [index];
您必须将其分配给某些L值。
当然它会无效,你没有做任何事情。
getArray() [index=2]++;
为了演示,我将使用myArray
切换getArray()
,其中{ 100, 200, 300, 400 }
。
比它等于:
myArray[2]++;
myArray[2]
现在输出:301
index
将是:2
getArray()
必须返回一个数字数组(比如说int
),所以getArray() [index=2]++;
解剖:
int index = 2; int[] array = getArray(); array[index] = array[index] + 1;