Operatorbaum
-
danke dir, für die schnelle Antwort! Wenn ich deinen Baum richtig interpretiere, habe ich den selben
Habe jetzt allerdings nochmals eine Frage, zu diesem Ausdruck:
c = 1 + ((b%7) ? b/a : 2) + -y * (int) ++x *3
Stimmt mein Operatorbaum soweit? (siehe Link)
Und ich habe jetzt einfach mal intuitiv mit dem + in der Mitte begonnen, ist das egal? Habe mal beide Bäume gezeichnet einmal mit + in der Mitte gestartet und einmal mit dem Vorderen...die Bäume sehen unterschiedlich aus, aber wenn ich die Werte a=3, b=7, x=1,4 und y=2 einsetze erhalte ich beides mal c=-9 und somit wäre es doch egal mit welchem ich "starte ?!Link:
http://www.bilder-hochladen.net/files/eb0o-2-c81e-jpg-nb.html
Danke schon einmal...
MfG
Kaula
-
*push*
ich weiß...bin ungeduldig^^
-
Kaula schrieb:
Und ich habe jetzt einfach mal intuitiv mit dem + in der Mitte begonnen, ist das egal? Habe mal beide Bäume gezeichnet einmal mit + in der Mitte gestartet und einmal mit dem Vorderen...die Bäume sehen unterschiedlich aus, aber wenn ich die Werte a=3, b=7, x=1,4 und y=2 einsetze erhalte ich beides mal c=-9 und somit wäre es doch egal mit welchem ich "starte ?!
Du musst die Assoziativität der Operatoren beachten. + und * sind beispielsweise linksassoziativ, d.h. a+b+c muss als ((a+b)+c) interpretiert werden, nicht als (a+(b+c)). Deine + sind also richtig gesetzt, die * sind falsch.
-
Danke dir Bashar!
Das mit der Assoziativität habe ich irgendwie völlig vergessen
Habe es jetzt nochmals probiert und nun müsste der Baum stimmen oder?
http://www.bilder-hochladen.net/files/eb0o-3-eccb.jpg
-
Sieht gut aus.
-
Moin zusammen,
ich habe hier gerade nochmals einen Ausdruck gefunden, der mir ein paar Probleme bereitet
c = x * ( (int) (3**p) % 2) ? ++a + b++ : (--a - b--)
Stimmt dieser Baum dazu?
http://s7.directupload.net/file/d/2576/rna4ngr5_jpg.htm
LG
-
Ja, man erkennt nur leider nicht, ob das jeweils Prä- oder Postinkrementoperatoren sind, da müsstest du dir noch was einfallen lassen. Evtl. ++pre und ++post schreiben.
-
Bashar schrieb:
Ja, man erkennt nur leider nicht, ob das jeweils Prä- oder Postinkrementoperatoren sind, da müsstest du dir noch was einfallen lassen. Evtl. ++pre und ++post schreiben.
Ok perfekt, danke dir
Habe das mal verbessert...
Nun tritt nämlich mein Problem auf, denn ich soll den Wert für c bestimmen.
Folgende "Daten" sind gegeben:
double x=1.2, *p=&x, c;
int a=1, b=2;Wenn ich jetzt mal in dem "Bedingungs-Ast" die gegebenen Werte einsetze, erhalte ich ja 3%2. D.h. eine 1 geht weiter nach oben und wird nun mit dem x(1.2) multipliziert...Erhalte dann 1.2 vom Typ double.
Aber wie geht es jetzt weiter? Ich dachte in der Bedingung wird entweder bei 1 der Wahr-Zweig ausgewählt oder bei 0 der Sonst-Zweig...Aber nun habe ich ja da 1.2
-
Alles ungleich 0 ist wahr.
-
Bashar schrieb:
Alles ungleich 0 ist wahr.
erklärt einiges
top, danke