Frage zur Priorität von Operatoren


  • Mod

    Ausnahmsweise linksassoziativ? So wie über die Hälfte der anderen Operatoren auch?

    Ich sehe auch nicht, was das deiner Meinung nach mit dem Ergebnis zu tun hat. Schließlich gibt es hier gar keine andere Operation mit gleicher Priorität. Ich bin mir sicher, du verstehst den Begriff "Assoziativität" völlig falsch. Und höchstwahrscheinlich hast du immer noch nicht verstanden, was hier überhaupt passiert.



  • @seppj sagte in Frage zur Priorität von Operatoren:

    Ausnahmsweise linksassoziativ? So wie über die Hälfte der anderen Operatoren auch?

    Ich sehe auch nicht, was das deiner Meinung nach mit dem Ergebnis zu tun hat. Schließlich gibt es hier gar keine andere Operation mit gleicher Priorität. Ich bin mir sicher, du verstehst den Begriff "Assoziativität" völlig falsch. Und höchstwahrscheinlich hast du immer noch nicht verstanden, was hier überhaupt passiert.

    Wahrscheinlich... ich bin ja sowieso zu dumm zum Programmieren...



  • Assoziativität gibts bei unären Operatoren nicht.



  • @bashar sagte in Frage zur Priorität von Operatoren:

    Assoziativität gibts bei unären Operatoren nicht.

    Goll, Grüner, Wiese sehen das auf Seite 134 in "C als erste Programmiersprache" aber anders... da werden die Inkrement- und Dekrementoperatoren als rechtsassoziativ aufgeführt!



  • @yadgar sagte in Frage zur Priorität von Operatoren:

    Goll, Grüner, Wiese sehen das auf Seite 134 in "C als erste Programmiersprache" aber anders... da werden die Inkrement- und Dekrementoperatoren als rechtsassoziativ aufgeführt!

    Wikibooks sieht das anders: https://de.wikibooks.org/wiki/C-Programmierung:_Liste_der_Operatoren_nach_Priorität

    Lies mal die 1 Sterne Bewertung zu dem Buch bei Amazon durch: https://www.amazon.de/C-als-erste-Programmiersprache-ISO-Standard/product-reviews/3519229994/ref=cm_cr_dp_d_hist_1?ie=UTF8&filterByStar=one_star&reviewerType=all_reviews#reviews-filter-bar

    Die vielen 5-Sterne Bewertungen kannst du nicht nehmen, weil die Bewerter halt Anfänger sind und die Fehler aus dem Buch nicht erkennen können.


  • Mod

    @yadgar sagte in Frage zur Priorität von Operatoren:

    @bashar sagte in Frage zur Priorität von Operatoren:

    Assoziativität gibts bei unären Operatoren nicht.

    Goll, Grüner, Wiese sehen das auf Seite 134 in "C als erste Programmiersprache" aber anders... da werden die Inkrement- und Dekrementoperatoren als rechtsassoziativ aufgeführt!

    Das ist in der Sprachdefinition dazu da, damit so etwas wie i++++ klar definiert ist als (i++)++) und niemals als i(++++) aufgefasst werden kann.

    PS: Wenn da aber sowohl Präfix, als auch Suffix als rechtsassoziativ stehen, dann ist das schlicht falsch. Suffix muss nach obiger Erklärung liksassoziativ sein, Präfix muss rechtsassoziativ sein.

    PPS: Bevor es irgendein Klugscheißer tut, sollte ich noch erklären, dass in der Sprachdefinition selber rein gar nichts von Operatorprioritäten oder Assoziativität steht. Das ergibt sich alles indirekt aus der Definition der Grammatik. Listen, wo die Operatorprioritäten und/oder Assoziativitäten drin stehen, wurden aus der Grammatikdefinition abgeleitet, weil ein menschlicher Leser nun einmal viel besser mit einer solchen Liste zurecht kommt als mit der sehr abstrakten Grammatikdefinition. Aber da gibt es keinerlei Ermessensspielraum: Zu sagen, Postfix wäre rechtsassoziativ wäre schlichtweg falsch, das ergibt sich so nicht aus der Grammatik.

    PPPS: Das oben macht natürlich alles nur Sinn, wenn man das Konzept der Operatorassoziativität überhaupt verstanden hat. Was du höchstwahrscheinlich nicht hast, denn Assoziativität hatte mit deinem eigentlichen Problem überhaupt gar nichts zu tun. Ich habe den Verdacht, du hast das Wort nur gebraucht, weil das in einer der Tabellen in deinem Buch stand.



  • Alle schreiben das voneinander ab, aber Sinn ergibt es trotzdem nicht. Es gibt keine Mehrdeutigkeit bei einem Ausdruck wie --*&x oder foo(x).y++, im Gegensatz zu a-b-c, was auf 2 Arten geklammert werden kann, von denen man sinnvollerweise die links-assoziative, also (a-b)-c, vorschreibt.


  • Mod

    @bashar sagte in Frage zur Priorität von Operatoren:

    Alle schreiben das voneinander ab, aber Sinn ergibt es trotzdem nicht. Es gibt keine Mehrdeutigkeit bei einem Ausdruck wie --*&x oder foo(x).y++, im Gegensatz zu a-b-c, was auf 2 Arten geklammert werden kann, von denen man sinnvollerweise die links-assoziative, also (a-b)-c, vorschreibt.

    Das von mir gebrachte Beispiel i++++ wäre aber durchaus mehrdeutig, wenn man nur mit den Konzepten "Priorität" und "Assoziativität" daran geht. Natürlich macht i(++++) keinen Sinn, aber das ändert ja nichts daran, dass man eine Regel braucht, die einem vorschreibt, dass (i++)++ die einzig richtige Interpretation ist.

    Siehe aber auch meine Bemerkung von oben, dass im Sprachstandard diese Konzepte gar nicht auftauchen.



  • Ja, man braucht so eine Regel, aber diese hat nichts mit Assoziativität zu tun.


  • Mod

    @bashar sagte in Frage zur Priorität von Operatoren:

    Ja, man braucht so eine Regel, aber diese hat nichts mit Assoziativität zu tun.

    Kann man aber auch mittels Assoziativität formulieren, die Regel.



  • Nein, eben nicht. Aber das führt wohl zu nichts mehr.


  • Mod

    @bashar sagte in Frage zur Priorität von Operatoren:

    Nein, eben nicht. Aber das führt wohl zu nichts mehr.

    Du verzeihst, wenn mir ein 'eben nicht' als Erklärung ein bisschen dünn ist, besonders nachdem ich gezeigt habe, wie die Regel lautet und wie ihre Anwendung zu dem richtigen Ergebnis führt.



  • Und was erwartest du jetzt? Ein wochenlanges Streitgespräch zu dem Thema?


  • Mod

    @bashar sagte in Frage zur Priorität von Operatoren:

    Und was erwartest du jetzt? Ein wochenlanges Streitgespräch zu dem Thema?

    Überhaupt irgendeine Art von Begründung?

    @bashar sagte in Frage zur Priorität von Operatoren:

    Assoziativität gibts bei unären Operatoren nicht.

    @bashar sagte in Frage zur Priorität von Operatoren:

    Alle schreiben das voneinander ab, aber Sinn ergibt es trotzdem nicht. Es gibt keine Mehrdeutigkeit bei einem Ausdruck wie --*&x oder foo(x).y++, im Gegensatz zu a-b-c, was auf 2 Arten geklammert werden kann, von denen man sinnvollerweise die links-assoziative, also (a-b)-c, vorschreibt.

    @bashar sagte in Frage zur Priorität von Operatoren:

    Ja, man braucht so eine Regel, aber diese hat nichts mit Assoziativität zu tun.

    @bashar sagte in Frage zur Priorität von Operatoren:

    Nein, eben nicht. Aber das führt wohl zu nichts mehr.

    Du schreibst sehr viel, aber sagst letztlich nur, dass es so wäre, aber nicht warum. Da es in diesem Thread viele Beispiele und Erklärungen für die Gegenthese gibt, wieso sollte man dir Beachtung schenken? Wir wollen ja vielleicht alle was lernen, aber wenn du nichts erklärst, dann ist das nicht hilfreich.



  • Da gibts auch nicht viel zu begründen, und ich hab null Motivation, dir zu erklären, warum das mit dem i(++++) Quatsch ist.


  • Mod

    Also redest du nur rum. Dachte ich mir schon, als du immer ausweichend geantwortet hast. Schade.



  • Lass es doch mal gut sein! Was hast du denn davon? Ich werd keine idiotensichere Dissertation verfassen, die dein i(++++) präzise widerlegt, und ich werde auch nicht formal meine Niederlage erklären, damit wirst du jetzt wohl leben müssen.


  • Mod

    @bashar sagte in Frage zur Priorität von Operatoren:

    Lass es doch mal gut sein! Was hast du denn davon?

    Ich würde gerne überhaupt mal wissen, was du meinst. Hier in diesem Thread wurde so einiges erklärt. Du hast stets dazwischen gerufen "Stimmt nicht!", aber weder gesagt warum, noch was du denkst was richtig ist. Das ist Wutz, nicht bashar.



  • Hi(gh)!

    Okay, ich habe offensichtlich die Reihenfolge von Wertzuweisung und Inkrementierung (bzw. Dekrementierung) mit der Richtung der Verknüpfung zweier Operanden verquickt... jetzt habe ich es verstanden, wie das mit Post- und Präfix funktioniert!

    Dass der Goll/Grüner/Wiese aber so ein Murks sein soll hätte ich nicht unbedingt erwartet - das wurde uns seinerzeit (1999-2001 - ich musste leider wegen eines Nervenzusammenbruchs in einer C++-Klausur vorzeitig abbrechen) am b.i.b. in Bergisch Gladbach als verbindliches Lehrbuch vorgegeben...

    Bis bald im Khyberspace!

    Yadgar


  • Mod

    @yadgar sagte in Frage zur Priorität von Operatoren:

    Dass der Goll/Grüner/Wiese aber so ein Murks sein soll hätte ich nicht unbedingt erwartet - das wurde uns seinerzeit (1999-2001 - ich musste leider wegen eines Nervenzusammenbruchs in einer C++-Klausur vorzeitig abbrechen) am b.i.b. in Bergisch Gladbach als verbindliches Lehrbuch vorgegeben...

    Deutsche Computerliteratur ist rar, und gute deutsche Computerliteratur ist nahezu nichtexistent. Irgendetwas mussten sie empfehlen aus der Menge schlechter Bücher. Achtung: Das heißt nicht im Umkehrschluss, dass englische Bücher gut wären, auch dort gibt es ungeheuer viel Schrott. Aber die wirklich guten Bücher sind alle auf Englisch und selten übersetzt.

    Trotzdem hat sich in 20 Jahren einiges getan. Ich kann nicht verstehen, wie man bei einem derart schnelllebigem Thema 20 Jahre alte Literaturtipps nehmen kann. Wir kommen hier im Forum gar nicht nach, die Literaturtipps aktuell zu halten und haben dies deswegen auf externe Quellen verlagert.


Anmelden zum Antworten