undefiniertes Verhalten?



  • Einen wunderschoenen guten Morgen wuensche ich,

    ich lese, wie jeden Morgen, mir bei Heise (ja ich weiss, das sagt schon alles :))
    die fuer mich interessanten News durch. In den Kommentaren kam dann jemand auf
    folgenden Codeschnippsel:

    a = (i=5) / (i--);
    

    Jemand antwortete:

    Na das ist nun aber wirklich ein Freature. In diesem Beispiel wirkts
    zwar sinnlos, ist manchmal aber echt praktisch. (a=1; i nacher 4)
    

    Nun, wenn ich mich aber recht erinnere, so darf sich eine Variable in einem
    Ausdruck nur einmal aendern => Ausdruck hat undefiniertes Verhalten.

    Liege ich damit richtig, oder taeuscht mich meine Erinnerung?

    mfg
    v R



  • virtuell Realisticer schrieb:

    Nun, wenn ich mich aber recht erinnere, so darf sich eine Variable in einem
    Ausdruck nur einmal aendern => Ausdruck hat undefiniertes Verhalten.

    kommt auf den ausdruck an, klammern etc. mal geht's mal ist's undefiniert. im allgemeinen schwer zu durchschauen ob's mit jedem compiler hinhaut. kommt drauf an, ob sequenzpunkte da sind.



  • In dem konkreten Ausdruck sind aber keine Sequenzpunkte => UB



  • Dann hat mich meine Erinnerung ja nicht getaeuscht 🙂

    mfg
    v R


Anmelden zum Antworten