Dieser Code verwendet & & im For-Schleife-Zustand. Es iteriert 4 mal, was zu der Antwort "sum = 20" führt. Ich würde denken, dass es 5 Mal iteriert, da die linke Seite der & & Bedingung wahr ist, wenn die rechte Seite, die falsch wird, die Schleife beendet.Java Short Circuit Confusion
Grundsätzlich ist meine Frage, warum es iteriert 4 mal und nicht 5, so dass die "Summe = 30"? Danke
`int[] lst = {1,2,3,4,5,4,3,2,1};
int sum = 0;
for (int frnt = 0, rear = lst.length - 1;
frnt < 5 && rear >= 5; frnt++, rear--){
sum = sum + lst[frnt] + lst[rear];
System.out.println("frnt: " + frnt);
System.out.println("rear: " + rear);
System.out.println();
}
System.out.print(sum);`
&& ist * und *, was bedeutet, dass * beide Bedingungen wahr sein müssen *, und wenn beide falsch sind, wird die Bedingung fehlschlagen. * Dies UND das * muss beides wahr sein. –
Ich dachte "beide Bedingungen müssen wahr sein" war für &. && ist ein Kurzschluss 'und' was bedeutet, wenn der erste wahr ist, wird der zweite nicht ausgewertet. Das habe ich sowieso gelernt. – physicalhacker
Das würde für || gelten (oder). Für && bedeutet Kurzschließen, dass, wenn die erste falsch ist, die zweite nicht ausgewertet wird, weil der gesamte Ausdruck bereits falsch ist. – clcto