Heim

Diskussion:Operatorrangfolge

Inhaltsverzeichnis

Vorzeichen vor Potenzierung?

Wird in der Mathematik wirklich das Vorzeichen vor der Potenzierung ausgewertet, gibt es dafür Belege? Dann würde ab gleichbedeutend sein zu ( − a)b, ich würde es aber eher als − (ab) verstehen. -- Memset 11:00, 24. Jun 2006 (CEST)

Stimmt: ab = − (ab), auch meine heimischen Nachschlagewerke (Mathematik-Meyer; Duden Mathematik; dtv-Atlas Mathematik udgl.) schreiben für die andere Lesart explizit ( − a)b; für zusätzliche Sicherheit habe ich zusätzlch den Mathematiker zu meiner Rechten gefragt.
Ich nehme an, der Autor der inkriminierten Zeilen kommt (wie so viele Wikipedia-Autoren) aus dem Computerumfeld - dort ist es vielfach so, wie im Artikel behauptet (z.B. "dc" und verschiedene Programmiersprachen).
Nachdem ich der erste bin, der auf deinen Einwand antwortet, nehme ich an, dass hier nicht viele mitlesen und streiche ich die falsche Aussage selber.
Viele Grüße, --GottschallCh 21:22, 29. Jun 2006 (CEST)
...wobei ich gerade sehe, dass ohnedies ich die falsche Formulierung verursacht habe. Peinlich. --GottschallCh 21:26, 29. Jun 2006 (CEST)

log, sin etc.

Welche Priorität haben einstellige Operatoren wie sin oder log? Konkret: logab, ist das als (loga)b oder als log(ab) zu lesen? Ich denke, das zweite ist richtig, habe dafür aber keinen Beleg.

Dieses hängt von der Programmiersprache oder der definierte Operatorrangfolge ab (man kann unterschiedliche definieren, hängt nicht unbedinge mit ein- oder zweistellige Operatoren zusammen). Im konkreten Fall bindet der Potenz stärker als log, also das zweite. --WiseWoman 00:07, 27. Mär. 2008 (CET)

Operator_rang_folge vs. Auswertungs_reihen_folge

Es sollte vielleicht doch darauf hingewiesen werden, dass das beides nicht das gleiche ist. Insbesondere in Programmiersprachen ist in der Regel die Operratorrangfolge durch die Sprachsyntax festgelegt, die Auswertungsreihenfolge, etwa wenn bestimmte Operatoren/Operationen Seiteneffekte haben, jedoch nicht. --RokerHRO 11:14, 18. Mär. 2008 (CET)

Genau. Aber warum ist "Auswertungsreihenfolge" noch drinne? Das hat mit der Programmiersprache zu tun, ob von innen nach aussen, oder stur links nach rechts (Occam!) ausgewertet wird. Zwei Operatoren können auf derselben Operatorrangfolge sein, aber in unterschiedlichen Auswertungsreihenfolgen drinne sein. Seufz, müssen wir darüber streiten? --WiseWoman 00:06, 27. Mär. 2008 (CET)
Es wird im Moment immer wieder rausgenommen, ein anderer nimmt den Begriff "Auswertungsreihenfolge" wieder rein. Ein klassischer Edit-War... :-(
Außerdem: Wenn ich dich richtig verstehe, verstehst du unter der Auswertungsreihenfolge, ob ein Ausdruck a◦b◦c wie (a◦b)◦c oder wie a◦(b◦c) zusammengefasst wird. Dies wird im Allgemeinen aber als "Assoziativität" bezeichnet.
In Programmiersprachen, die Ausdrücke mit Seiteneffekten zulassen (wie z.B. C), ist mit Auswertungsreihenfolge jedoch die Reihenfolge gemeint, mit der eben diese Seiteneffekte ausgewertet (und ausgeführt) werden. Diese ist in C bei vielen Operanden nicht definiert. Also ob in einem C-Ausdruck wie x=f(x)+g(x) zuerst die Funktion f oder zuerst g ausgeführt wird, ist nicht festgelegt. Auf Systemen mit mehreren Prozessoren könnten sie sogar gleichzeitig ausgeführt werden! Jedoch ist festgelegt, dass die Addition erst ausgeführt wird, nachdem beide Funktionen fertig sind und ihr Ergebnis geliefert haben, und danach erst die Zuweisung erfolgt.
Da es in der Mathematik IMHO keine Ausdrücke mit Seiteneffekten gibt, existiert dort auch der Begriff der Auswertungsreihenfolge so nicht. --RokerHRO 20:12, 28. Mär. 2008 (CET)

Rechtsassoziativität der Potenzierung

"Von den genannten arithmetischen Operatoren ist die Potenzierung rechtsassoziativ, d. h.:

."

Für mathematische Formeln gilt das, aber auch für Programmiersprachen? Zumindest wenn man in MATLAB den Ausdruck "2^3^2" eingibt und anschließend die Eingabetaste betätigt, erhält man 64 als Ergebnis. Nach der Rechtsassoziativität der Potenzierung müsste aber 512 dabei herauskommen. Dasselbe gilt für das Microsoft-Tabellenkalkulationsprogramm "Excel". Das Windows-Zubehör-Taschenrechnerprogramm hält sich im Standardmodus nicht an irgendwelche Operatorprioritäten, im wissenschaftlichen Modus doch. Wenn also auch schon bei der Vorzeichenpriorität ein Compiler eine Formel eingegebene anders liest, als sie als mathematische Formel gelesen werden müsste, könnte das bei der Assoziativität der Potenzierung ähnlich sein?--Slow Phil 14:18, 18. Mär. 2008 (CET)

Was soll eigentlich "Rechtsassoziativität" sein? Assoziativität ist eine Eigenschaft der Verknüpfung. Hier geht es aber um die Notation. Gemeint ist, dass Potenzierung von rechts nach links ausgewertet wird. Dies als "Rechtsassoziativität" zu bezeichnen halte ich für irreführend.--Digamma 15:07, 18. Mär. 2008 (CET)

Steht aber so im Artikel. Gemeint ist, dass "2^3^2" als 2^(3^2)=512 und nicht als (2^3)^2=64 aufzufassen sei, wenn es in einer mathematischen Formel steht. MS Excel, aber auch MATLAB werten hingegen diesen Ausdruck so aus wie (2^3)^2=64. Wie sieht das in anderen Programmiersprachen aus?--Slow Phil 15:46, 18. Mär. 2008 (CET)

Sowohl der **-Operator in Python als auch der ^-Operator im POSIX-bc (Basic Calculator) sind rechtsassoziativ. -- memset 17:42, 27. Mär. 2008 (CET)