Beim geteilt wird mit der Zerlegung begonnen. Das schreibt vor, erst die linke Seite abzuarbeiten, also das +.
Hier geht es wieder von links nach rechts, also erst das b erhöhen. Dann wird -(a++) addiert.
SixFeetUnder
Also geht es garnicht um die Klammern, sondern nach der Zuweisung des unären Minus zu 3,59 sofort zu dem geteilt Zeichen?
eulerscheZahl
/ arbeitet von links nach rechts.
Hier eine Zeile mit gleicher Ausgabe:
Welche Priorität haben denn eigentlich die Klammern? Ist die Assoziativität dann links oder rechts?
SixFeetUnder
Dankeschön :-)
eulerscheZahl
Stimmt alles.
SixFeetUnder
Eine Frage noch:
Ich habe den folgenden Code:
code:
1:
int sum = -5*6*-9/4;
Hier wird doch das unäre Minus zuerst der 9 (Assoziativität rechts) zugeordnet, dann das unäre Minus der 5. Danach kommt die Multiplikation (Assiziativität links), sprich -5*6 = -30;
Danach -30*-9 = 270 und zuletzt dann 270 / 4 = 67 (da es zwei Integer - Zahlen sind).
Ist das richtig von der Interpretation?
SixFeetUnder
Danke für die Rückmeldung
eulerscheZahl
Stichwort: linksassoziativ.
code:
1:
2:
3:
x = (a * a++) * ++a;
x = a * a++; //5 * 5 = 25
x *= ++a; //x *= 7 -> x =175
SixFeetUnder
Inkrement- und Dekrementoperatoren
Meine Frage:
Hallo zusammen,
ich habe das folgende Programm:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
package ausarbeitung;
public class Ausarbeitung
{
public static void main(String[] args)
{
int x, a=5;
x = a * a++ * ++a;
System.out.println(x);
}
}
Ich weiß, dass man so niemals programmieren würde; Trotzdem versuche ich mich an der Ausgabe.
Meine Ideen:
Folgendes Vorgehen:
Ich sehe mir die Zeile an, Inkrement-Operator hat eine höhere Priorität als das * - Zeichen. Da ich zwei Inkrement - Operatoren in meiner Zeile habe, erfolgt die Assoziativität von rechts. Also wird das ++a auf 6 gesetzt, somit ist a=6.
Also steht als Ausdruck:
code:
1:
x = a * a++ * 6;
Als nächstes ist dann a++ dran, hier müsste aber a auf 6 bleiben, da es Postinkrement ist.
Also habe ich:
code:
1:
x = a * 6 * 6;
Und erst jetzt wird a = 7;
Somit wäre die letzte Zeile:
code:
1:
x = 7*6*6;
Als Endergebnis dann 252. Meine IDE sagt aber 175.
Daher meine Frage an Euch, wo habe ich hier einen Fehler?