🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fras.text.programmieren
1 messages
1 total messages Started by Michael Bergmann Sat, 16 Mar 1996 14:59
SAS-C: Seiteneffekt bei printf()
#92
Author: Michael Bergmann
Date: Sat, 16 Mar 1996 14:59
52 lines
2798 bytes
Kann mir jemand erklären, wie dieser Seiteneffekt zustande kommt:

----------------------------- schnipp ---------------------------------

/************************************************************************
** Erklärung: Seiteneffekte                                            **
** In "C" wurde nicht festgelegt, was passiert, wenn mehrere Ausdrücke **
** in einer Anweisung vorkommen. Unbeabsichtigte Seiteneffekte sind    **
** möglich.                                                            **
** Im Beispiel verändern die Ausdrücke eine Variable "i". Es macht     **
** einen Unterschied, ob die Ausdrücke von links oder rechts her       **
** bearbeitet werden!                                                  **
** Derartige Programmzeilen sollten besser in einzelne Anweisungen     **
** zerlegt werden. Evtl. sind dann Hilfsvariablen nötig.               **
************************************************************************/

/* Headerfiles / Informationsdateien */
#include <stdio.h>

int main(void)
{
    int i = 77; // Deklaration mit Initialisierung = Definition

    fputs("\x1b[2J", stdout);
    puts("\nseit.c");
    
    printf("\nMehrfach i: %d %d %d %d\n\n", ++i, i=i+3, i--, i);
    // Ausgabe: Mehrfach i: 80 81 81 80
    // SAS-C wertet also den Ausdruck scheinbar so aus:
    // 1) i=i+3 (80)
    // 2) ++i   (81)
    // 3) i--   (81)
    // 4) i     (80)

    return 0;   // Rückgabewert
}

----------------------------- schnapp ---------------------------------

Erwarten würde ich als Ausgabe: 78, 81, 81, 80!
Das Beispiel stammt aus einem C-Seminar.



mfG,
 _____________________________________________________________________________________
                                    Michael Bergmann
 Amiga 4000T · CS 060/50Mhz/CV 64 · 22MB RAM · Toccata · Kickstart v40.68 · WB v40.42
 -------------------------------------------------------------------------------------

» Unsere Erlebnisse sind vielmehr das, was wir hineinlegen, als das,
was darin liegt. «  /Nietzsche/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads