Operatoren und Prioriät

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
IVIagier
Beiträge: 2
Registriert: Sa Jan 21, 2017 9:15 pm

Operatoren und Prioriät

Beitrag von IVIagier » Sa Jan 21, 2017 9:18 pm

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

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Operatoren und Prioriät

Beitrag von cloidnerux » So Jan 22, 2017 12:19 pm

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"
Redundanz macht wiederholen unnötig.
quod erat expectandum

IVIagier
Beiträge: 2
Registriert: Sa Jan 21, 2017 9:15 pm

Re: Operatoren und Prioriät

Beitrag von IVIagier » So Jan 22, 2017 2:48 pm

Ok, vielen lieben Dank für die Antwort!

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

Gruß IVIagier

Antworten