Präzedenz und Assoziativität
-
rubix schrieb:
[1] 1.1 a = b >> 2 + 4;
1.1 ((a=b)>>2)+4)
Meine Lösung:
1.1 (a=(b>>(2+4)))
http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
Wenn du nach so eine Liste vorgegangen bist, hast du es umgekehrt gemacht.
-
Schau dir mal die Liste an.
Zu 1.1:
a = b >> 2 + 4;
Das Plus hat die höchste Priorität, wird also als erstes ausgewertet.
Es folgt der Shift und mit niedrigster Priorität die Zuweisung.(a = (b >> (2 + 4)));
Rest versuch mal selbst und zeig, was du hast.
-
1.1
Hier das Bild dazu
http://s14.directupload.net/images/130718/vhq5azdq.jpg+ ist binär, auch wenns unär wäre, stünde es trotzdem an erster stelle.
dann komm von der präzidenz >>
und dann erst =Also verstehe nicht warum ihr das als falsch ansehts
-
rubix schrieb:
Hier das Bild dazu
Der Baum ist genau falschrum. Nach deinem Baum fließt das Ergebnis der Zuweisung in den Shift, und dessen Ergebnis in die Addition.
rubix schrieb:
Also verstehe nicht warum ihr das als falsch ansehts
Weil nach deiner Klammerung = zuerst ausgeführt würde.
-
Nach deinem Bild würde a alleine b zugewiesen, anschließend der Wert von a um 2 Stellen nach rechts geshiftet und zum Schluss mit 4 addiert werden. Du musst allerdings den Baum umdrehen, um der richtigen Auswertungsreihenfolge nachzukommen.
a weise zu b geshiftet um 2 addiert mit 4
-
Neue Lösung
1.1 (a=(b>>(2+4)))
1.2 (((a=b)&&a)>>z)?(x=y)):z)2.2 (a=(f(x)&&(a>100)))
2.3 (a==b) && (x!=y)
2.4 (a=(b+=(2+f(2)))Bei der 2.1 habe ich leider keine Lösung gefunden
-
1.1: Richtig.
1.2: Völliger Unsinn
2.2: Richtig.
2.3: Richtig.
2.4: Richtig.
-
SeppJ schrieb:
1.1: Richtig.
1.2: Völliger Unsinn
2.2: Richtig.
2.3: Richtig.
2.4: Richtig.könntest du bitte erklären warum 1.2 Völliger Unsinn ist?
-
rubix schrieb:
könntest du bitte erklären warum 1.2 Völliger Unsinn ist?
Das fängt halt schon wieder an, dass da (a=b) als innerstes steht, obwohl '=' einer der am schwächten bindenden Operatoren ist. Danach ist der Rest dann auch völlig falsch, weil einfach gar nichts mehr passt, wenn das b weg ist.
-
Na, 2.1 ist nicht schwer.
Youka schrieb:
Schau dir mal die Liste an.
Geh die Liste von oben nach unten durch und such dabei die Operatoren in deiner Zeile raus.
Genauso verfährst du nun mit 1.2.