Devuelve el índice de la matriz y el incremento al mismo tiempo

¿Cómo manejan Java, Kotlin y Android la devolución de un valor de matriz en un índice determinado mientras se incrementa el valor del índice?

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

result = someArray[index++];

¿Qué índice se pasaría al resultado? ¿Incrementará? index primero, luego páselo a someArray[1], o pasará el valor original de index a someArray[0] y luego incrementar index?

preguntado el 28 de agosto de 11 a las 00:08

Cuando se enfrenta a estas preguntas, es igual de rápido que lo pruebe usted mismo, por ejemplo, utilizando una herramienta en línea como ideone -

Ah genial ... cuando programo en Python, pruebo el código directamente desde la terminal. No es tan fácil hacer eso en Android, probaré esa herramienta en línea la próxima vez, gracias. -

@godMode intentar IDEdroid gratis -

5 Respuestas

Ver: documentación de Java, Operadores de asignación, aritméticos y unarios:

El resultado del código ++; y ++ resultado; ambos terminarán en un resultado incrementado en uno. La única diferencia es que la versión del prefijo (++ resultado) evalúa el valor incrementado, mientras que la versión del sufijo (resultado ++) evalúa el valor original.

Entonces obtendrás someArray[0].

Respondido el 30 de diciembre de 20 a las 19:12

index++ devoluciones index y luego se incrementa en 1. Así que funcionará result = someArray[0] y luego establecer index a 1.

A diferencia de, ++index haría el incremento y luego pasaría el valor incrementado. Así que si quisieras result establecido en someArray[1] en el código anterior, usarías ++index.

Como dijo alguien más, no utilice este tipo de sintaxis. En su lugar, escribe

index++;
result = someArray[index];

Respondido 28 ago 11, 04:08

En Java y lenguajes similares, usando index++ solo incremente el valor después de que se haya evaluado la expresión. Si desea incrementar antes de usar la variable, use ++index.

En este caso, utilizará el valor original de index para obtener resulty luego aumente su valor a 1.

Respondido 28 ago 11, 04:08

Pasara someArray[0] y luego incrementar index

No depende de Android, la regla general es:

index ++ significa que evalúa el índice y luego lo incrementa, mientras que ++ index se incrementa y luego evalúa

Respondido 28 ago 11, 04:08

1.) Evite hacer este tipo de cosas, de hecho, con el código que reviso, le pido a la gente que nunca haga esto.

No específicamente usando ++, sino el hecho de que lo está haciendo como parte de la evaluación de otra cosa. Por lo general, al compilador no le costará nada más tener ese incremento como una declaración separada, y ponerlo así en línea significa que la próxima persona que llegue tiene que tomarse un segundo y evaluar el incremento ellos mismos.

Sé que es menor y un poco quisquilloso, pero cosas como esta cuestan más tiempo durante la revisión del código, es fácil pasarlas por alto durante el escaneo, etc. Y no le ahorra nada más que algunas pulsaciones de teclas adicionales, que en comparación con la claridad y la legibilidad del código no vale la pena en mi opinión.

2) Obtendrá someArray [0], y después de pasar a la siguiente línea, aumentará su índice.

Respondido 28 ago 11, 17:08

++ es una operación bastante común. Si está desarrollando software que otra persona va a mantener, entonces el pre y postincremento suele ser algo que puede esperar que ellos sepan. Estoy de acuerdo en que normalmente no deberías hacer esto, pero esa es una razón terrible. - Derekerdmann

De acuerdo, amplié mi razón un poco y clarifiqué que no estoy en contra del incremento pre / post, solo con hacerlo en línea en otras operaciones. A menos que haya una razón específica del compilador para hacerlo en un caso dado, está intercambiando pulsaciones de teclas por claridad / legibilidad, que es un hábito terrible. Brandon Langley

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.