compilar y ejecutar el código en Cdiferencias lógicas en C y Java
#include <stdio.h>
int main()
{
int a[] = {10, 20, 30, 40, 50};
int index = 2;
int i;
a[index++] = index = index + 2;
for(i = 0; i <= 4; i++)
printf("%d\n", a[i]);
}
Salida: 10 20 4 40 50
ya por la misma lógica en Java
class Check
{
public static void main(String[] ar)
{
int a[] = {10, 20, 30, 40, 50};
int index = 2;
a[index++] = index = index + 2;
for(int i = 0; i <= 4; i++)
System.out.println(a[i]);
}
}
Salida: 10 20 5 40 50
¿Por qué hay diferencia de salida en ambos idiomas, la producción es comprensible f o Java
pero no puedo entender la producción en C
Una cosa más, si aplicamos el operador de prefijo ++
, obtenemos el mismo resultado en ambos idiomas, ¿por qué?
pero ¿quién escribiría un código como ese (en una aplicación real)? –
@CarlosHeuberger Veo que no está acostumbrado a la etiqueta 'C++' –
@RyanHaining No lo entiendo, pero el comentario fue del 8 de enero ** 2010 ** y la pregunta no fue etiquetada con 'C++' ese momento . Y todavía creo que 'a [index ++] = index = index + 2' no es bueno ni en C, C++ ni en Java (Python?) - por el comentario up-votes, creo que no estoy solo - o lo hace' La etiqueta C++ 'significa que el código puede ser ilegible (como Code Golf quizás?) Y, vea la única respuesta, también C está un poco * confundido * al respecto ... –