返回数组索引并同时递增

Posted

技术标签:

【中文标题】返回数组索引并同时递增【英文标题】:Return Array index and increment at the same time 【发布时间】:2011-11-05 07:17:58 【问题描述】:

Java、Kotlin 和 android 如何处理在给定索引处返回 Array 值同时递增索引值?

int[] someArray = new int[5];
int index = 0;
int result;

result = someArray[index++];

哪个索引将被传递给结果?它会先增加index,然后将其传递给someArray[1],还是将index 的原始值传递给someArray[0],然后增加index

【问题讨论】:

当遇到这样的问题时,自己尝试一下也一样快,例如使用在线工具,例如ideone 啊酷...当我在 python 中编程时,我直接从终端测试代码。在android中不是那么容易做到这一点,我下次试试那个在线工具,谢谢。 @godMode 试试IDEdroid Free 【参考方案1】:

请参阅:Java 文档,Assignment, Arithmetic, and Unary Operators

代码结果++;和++结果;都将导致结果加一。唯一的区别是前缀版本 (++result) 的计算结果为递增值,而后缀版本 (result++) 的计算结果为原始值。

所以你会得到someArray[0]

【讨论】:

【参考方案2】:

index++返回index,然后加1。所以它会做result = someArray[0],然后将index设置为1。

相比之下,++index 会执行增量,然后传递增量值。所以如果你想在上面的代码中将result 设置为someArray[1],你可以使用++index

正如其他人所说,请不要使用这种语法。相反,请写

index++;
result = someArray[index];

【讨论】:

【参考方案3】:

在 Java 和类似语言中,使用 index++ 仅在计算表达式后递增值。如果要在使用变量之前递增,请使用++index

在这种情况下,它将使用index的原始值得到result,然后将其值增加到1。

【讨论】:

【参考方案4】:

它将传递someArray[0],然后递增index

它不依赖于android,一般规则是:

index++ 表示先计算索引再递增,而 ++index 表示先递增再计算

【讨论】:

【参考方案5】:

1.) 避免做这种事情,事实上,在我审查的代码中,我要求人们永远不要这样做。

不是专门使用 ++,而是您将其作为评估其他内容的一部分。通常,将增量作为单独的语句进行编译不会花费任何额外费用,并且像这样将其内联意味着接下来的人必须花一秒钟时间自己评估增量。

我知道这是次要的,而且有点挑剔,但是像这样的事情在代码审查期间会花费额外的时间,在扫描时很容易错过等等。而且它只会为您节省一些额外的击键,与代码相比IMO 的清晰度和可读性不值得。

2) 你会得到 someArray[0],在移动到下一行之后,你的索引会增加。

【讨论】:

++ 是一种非常常见的操作。如果您正在开发其他人将要维护的软件,那么前/后增量通常是您可以期望他们知道的。我同意你通常不应该这样做,但这是一个糟糕的理由。 同意,稍微扩展我的理由并澄清我不反对前/后递增,只是在其他操作中内联。除非在特定情况下有特定的编译器理由这样做,否则您正在用击键换取清晰度/可读性,这是一个糟糕的习惯。

以上是关于返回数组索引并同时递增的主要内容,如果未能解决你的问题,请参考以下文章

返回意外值的指针/数组索引

当作为回调传递时,随着每个函数调用递增地返回每个数组项

仅当 min 位于数组的较低索引位置时才使用 .minmax 返回值

3627删除一个元素使数组严格递增

308删除一个元素使数组严格递增

3627删除一个元素使数组严格递增