order of evaluation?



  • Kurz und knapp: Ist das Resultat folgender Funktion definiert?

    void kopiermir (char *x, char *y, unsigned int i)
    {
       while (i--) *x++ = *y++;
    }
    

    Wenn das "offensichtlich" sein sollte, sorry 🙂

    Ansonsten hatte ich in Erinnerung, dass der Compiler nicht zwangsläufig von rechts nach links oder andersherum evaluiert.
    Somit könnte zumindest bei zwei unterschiedlichen Compilern auch ein anderes Ergebnis denkbar sein, right?

    Ich habe sozusagen den leisen Verdacht, dass obige Funktion nicht unbedingt geeignet ist, um präzise i chars aus y auf x zu schreiben...



  • Welches Problem genau schwebt dir da vor? Die Evaluationsreihenfolge ist zwar nicht definiert, aber das Ergebnis der Funktion hängt davon auch nicht ab, soweit ich sehe.



  • C ist toll 😃

    Es sind doch alles unteschiedliche Variablen.

    Mit welchen Problemen rechnest du?.



  • PrettyP schrieb:

    den leisen Verdacht, dass obige Funktion nicht unbedingt geeignet ist, um präzise i chars aus y auf x zu schreiben...

    Doch. Auf welchen Annahmen beruht dein Verdacht?



  • auf falschen! 🙂

    Danke Euch


Anmelden zum Antworten