Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Logik » Inkrement- und Dekrementoperatoren » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
eulerscheZahl

So sieht der Baum aus:
code:
1:
2:
3:
4:
      /
    +   b++
++b   -
     a++

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:
code:
1:
System.out.println( (8.98 + -3.59) / (8.98) );
SixFeetUnder

Irgendwie werden die Fragen nicht weniger :-)

code:
1:
2:
double a=3.59, b=7.98;         
System.out.println( (++b + -a++) / (b++) );


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 Daumen hoch
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?

Vielen Dank