Frage zu Variablen



  • Ich hab nur das

    Gegeben sei:
    int a = 2, b = 1; /* Diese Anweisungen sind Grundlage */
    int * ptr = &b;

    eingefügt 😃


  • Mod

    moses030 schrieb:

    Ich hab nur das

    Gegeben sei:
    int a = 2, b = 1; /* Diese Anweisungen sind Grundlage */
    int * ptr = &b;

    eingefügt 😃

    Upps, da war ich es selber, der durcheinander gekommen ist 😃

    Ich meinte o, wo ich m schrieb. Hab's korrigiert.

    Wobei ich mich nun frage, was deine Antwort zu o ist.



  • o wäre für mich...

    o) a = b + (++b);

    a = 3

    weil b wird erst inkrementiert und dann plus 1 gerechnet.

    So würde ich das sagen 🙂


  • Mod

    Dummerweise ist eine Klammer aber kein Sequenzpunkt, daher ist weder garantiert, ob das Inkrement vor dem zweiten Zugriff auf b erfolgt, noch in welchem Zustand b überhaupt ist, wenn man b gleichzeitig ändert und liest. Der ganze Ausdruck ist daher undefiniert.



  • Aber werden Klammern vom Compiler nicht bevorzugt behandelt?

    Ich danke dir das du dich schonmal mit dem Beitrag auseinandersetzt.

    Ich hoffe wir bekommen irgendwann alle Lösungen zusammen.
    Hab nochmal eine Chance bei meinem Dozenten den Test zu schreiben.

    Grüße


  • Mod

    moses030 schrieb:

    Aber werden Klammern vom Compiler nicht bevorzugt behandelt?

    Das betrifft aber keine Nebeneffekte. Und auch die tatsächliche Reihenfolge der Abarbeitung muss nur zu dem gleichen Ergebnis führen, wie die aus der Mathematik bekannte Reihenfolge, wie sie tatsächlich abläuft, kann dann noch optimiert werden. Gerne werden da mehrere Teilausdrücke gleichzeitig oder wild durcheinander ausgewertet. Und dann ist es schlecht (milde ausgedrückt), wenn einer der Teilausdrücke den Wert eines anderen beeinflussen würde.



  • Verstehe verstehe...

    danke für deine Erläuterung. Nichts destotrotz kann ich mienem Dozenten nicht sagen, hey das was Sie von uns verlangen, is nicht optimal was die initialisierung vonVariablen angeht. Könnte ich zwar machen aber obs ihn interessiert ist die Frage 😕

    Grüße

    Bitte weiter um Hilfe 😕



  • o) ist undefiniertes Verhalten. Sowas machen Leute, die keine Ahnung von C haben. Dein Lehrer hat keine Ahnung.
    Schätze selber ein, was es dir bringt, von einem Ahnungslosen C gelehrt zu bekommen.



  • Bei l) ist ein überflüssiges Klammerpaar. Dann wird es doch gleich viel übersichtlicher.

    EDIT:
    Eigentlich sogar zwei.

    EDIT #2:
    Noch mindestens eine gefunden.



  • Wutz schrieb:

    o) ist undefiniertes Verhalten. Sowas machen Leute, die keine Ahnung von C haben. Dein Lehrer hat keine Ahnung.
    Schätze selber ein, was es dir bringt, von einem Ahnungslosen C gelehrt zu bekommen.

    vielleicht erwartet der Leher "undefiniertes Verhalten" als Antwort.


Anmelden zum Antworten