Operatorenreihenfolge
-
Link!
Und Operatorenreihenfolge wird vom Standard garantiert.
-
da steht aber addition und subtraktion bei priorität 4.
(@dachschaden ich hatte das schon gegoogled bin aber zu einem anderen ergebnis gekommen)Was bedeutet Unary plus and minus?
Wo steht dann was bei gleicher Priorität vorgeht?
MfG
-
dann gibt es auch noch sich wiedersprechende Seiten:
http://en.cppreference.com/w/c/language/operator_precedence
http://de.wikibooks.org/wiki/C-Programmierung:_Liste_der_Operatoren_nach_Priorit%C3%A4t
entgegen
http://rn-wissen.de/wiki/index.php/C-Tutorial#Reihenfolge_der_Auswertung
MfG
-
Destiniy schrieb:
Was bedeutet Unary plus and minus?
unary/unär heißt ein Operand, binary/binär heißt zwei Operanden. Beispiel: a * b ist ein binäres * und bedeutet Multiplikation, *p ist unär und heißt Dereferenzierung eines Zeigers.
Unäres plus/minus sind die Vorzeichen: +2, -1.
Ich weiß allerdings nicht, warum du dich darauf so versteifst. Der Tipp mit den gleichen Prioritäten war falsch und wurde schon zurückgezogen, noch bevor du darauf reagiert hast.
-
OK dann brauch man da keine Klammern
-
Allerdings ist es nicht schlecht, die Klammern trotzdem zu setzen. Sonst guckst du in 4 Wochen auf deinen Code und rätselst wieder, was genau dort passiert.
Geht mir zumindest manchmal so...
-
Destiniy schrieb:
dann gibt es auch noch sich wiedersprechende Seiten:
http://en.cppreference.com/w/c/language/operator_precedence
http://de.wikibooks.org/wiki/C-Programmierung:_Liste_der_Operatoren_nach_Priorit%C3%A4t
entgegen
http://rn-wissen.de/wiki/index.php/C-Tutorial#Reihenfolge_der_Auswertung
MfG
Nur die auf cppreference.com ist richtig und erwähnt zudem auch C99 und C11.
-
Destiniy schrieb:
Wo steht dann was bei gleicher Priorität vorgeht?
Das ist diese "Associativity" in den Tabellen. Addition ist zum Beispiel linksassoziativ, d.h.
4+5+6
ist(4+5)+6
. Präfix ++ und logisches NOT (!) sind hingegen rechtassoziativ, d.h.!++foo
ist!(++foo)
.EinGast schrieb:
Destiniy schrieb:
dann gibt es auch noch sich wiedersprechende Seiten:
http://en.cppreference.com/w/c/language/operator_precedence
http://de.wikibooks.org/wiki/C-Programmierung:_Liste_der_Operatoren_nach_Priorit%C3%A4t
entgegen
http://rn-wissen.de/wiki/index.php/C-Tutorial#Reihenfolge_der_Auswertung
MfG
Nur die auf cppreference.com ist richtig und erwähnt zudem auch C99 und C11.
Könnt ihr einem alten, blinden Mann mal sagen, wo da Unterschiede sein sollen? Meint ihr die Zahl in der ersten Spalte? Aber Priorität* /= Präzedenz+. Hohe Priorität heißt kleiner Präzedenzfaktor.
*: Übersetzung: "Wie sehr kommt man früher dran"
+: Zu deutsch ungefähr: "Als wievielter kommt man dran".
-
[quote="SeppJ"]
Destiniy schrieb:
Könnt ihr einem alten, blinden Mann mal sagen, wo da Unterschiede sein sollen?
Bei Wikibooks und dieser RN-Wissen-Seite sind Postfix-In- und -Dekrement (momentan) falsch. Deren Priorität ist 15.
-
EinGast schrieb:
SeppJ schrieb:
Könnt ihr einem alten, blinden Mann mal sagen, wo da Unterschiede sein sollen?
Bei Wikibooks und dieser RN-Wissen-Seite sind Postfix-In- und -Dekrement (momentan) falsch. Deren Priorität ist 15.
Ahh, jetzt sehe ich es. Beziehungsweise nicht mehr, da du es bei Wikibooks bereits korrigiert hast
.
Da sieht man mal wieder die Qualität von Online-Tutorials. Selbst von Tutorial-Wikis. Viele Anfänger zusammen machen eben immer noch keinen qualifizierten Autor.
(cppreference.com ist zwar auch eine Wiki, aber mit anderer, erfahrenerer Zielgruppe und somit auch Autorengruppe. Ebenso die Wikipedia zum gleichen Thema)
-
SeppJ schrieb:
Destiniy schrieb:
Wo steht dann was bei gleicher Priorität vorgeht?
Das ist diese "Associativity" in den Tabellen. Addition ist zum Beispiel linksassoziativ, d.h.
4+5+6
ist(4+5)+6
. Präfix ++ und logisches NOT (!) sind hingegen rechtassoziativ, d.h.!++foo
ist!(++foo)
.Die Assoziativität sagt bei unären Operatoren nichts aus. Welche Interpretationsmöglichkeit soll es denn bei !++foo noch geben, (!++)foo?