Seite 1 von 1

Operatoren und Prioriät

Verfasst: Sa Jan 21, 2017 9:18 pm
von IVIagier
Hallo Freunde,

ich habe eine Frage zu der Priorität der Operatoren + und -.
Wie ich in dem Thema lesen konnte haben die Vorzeichen + und - eine Priorität von 16.
Wenn man allerdings eine Addition/Subtraktion als Zeichen verwendet haben + und - eine Prio von 13.
Wie kann der Compiler das unterscheiden?

Gruß IVIagier

Re: Operatoren und Prioriät

Verfasst: So Jan 22, 2017 12:19 pm
von cloidnerux
Hallo und Willkommen im Forum :D
Wie kann der Compiler das unterscheiden?
Über den Kontext. Hast du z.B eine Zuweisung:

Code: Alles auswählen

a = -10;
Dann muss das "-" klar ein Vorzeichen sein.
Hättest du den folgenden Fall:

Code: Alles auswählen

a = b + c;
Dann muss das "+" klar eine Addition sein, weil davor und dahinter eine Variable steht.
Komplizierter ist es bei solchen Konstrukten:

Code: Alles auswählen

a = b * -c;
Ist es ein Syntax Error oder doch ein Vorzeichen und eine Multiplikation? Der Compiler wird sich meistens für das letztere Entscheiden.

Wichtig zum Verständnis ist aber, dass es viele mehr- oder uneindeutige Konstrukte in C/C++ gibt. Daher sollte man im Zweifelsfall immer Klammern setzten, um wirklich sicher zu gehen, dass das was du programmierst auch das ist, was am ende heraus kommt. Mehr dazu hier:
https://en.wikipedia.org/wiki/Undefined_behavior
oder unter dem Stichwort "C undefined behaviour"

Re: Operatoren und Prioriät

Verfasst: So Jan 22, 2017 2:48 pm
von IVIagier
Ok, vielen lieben Dank für die Antwort!

Habe davor noch nie von 'undefined behaviour' gehört :D

Gruß IVIagier