skompilować i uruchomić ten kod w Cróżnice logiki w C i 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]);
}
wyjściowa: 10 20 4 40 50
teraz za tą samą logiką w Javie
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]);
}
}
wyjściowa: 10 20 5 40 50
Dlaczego występują różnice wyjściowe w obu językach, wyjście jest zrozumiałe lub Java
ale nie rozumiem wyjścia w C
Jeszcze jedno, jeśli zastosujemy operator prefiksu ++
, otrzymamy taki sam wynik w obu językach, dlaczego?
ale kto napisałby taki kod (w prawdziwej aplikacji)? –
@CarlosHeuberger Widzę, że nie jesteś przyzwyczajony do tagu 'C++ ' –
@RyanHaining Nie rozumiem tego, ale komentarz był od 8 stycznia ** 2010 **, a pytanie nie zostało oznaczone tym razem jako' C++' . I nadal uważam, że 'a [index ++] = index = index + 2' nie jest dobry ani w C, C++, ani w Javie (Python?) - przez komentarze w górę głosów, wierzę, że nie jestem sam - czy też Znacznik C++ 'oznacza, że kod może być nieczytelny (jak może być Code Golf?) I zobacz jedyną odpowiedź, także C jest trochę * zdezorientowana * o tym ... –