🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fras.text.programmieren
Article #92

SAS-C: Seiteneffekt bei printf()

#92
From: 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/
Technical Details
Message-ID: <xSuVLMD4E3FaUz1@asparagus.tecmania.mcnet.de>
Path: arc1-ca.pugleaf.net!black-z.commo.mcnet.de!tecmania.mcnet.de

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!black-z.commo.mcnet.de!tecmania.mcnet.de
From: ASPARAGUS@tecmania.mcnet.de (Michael Bergmann)
Newsgroups: fras.text.programmieren,t-m-s.allgemein,z-netz.rechner.amiga.programmieren,z-netz.sprachen.c
Followup-To: z-netz.rechner.amiga.programmieren
Subject: SAS-C: Seiteneffekt bei printf()
Date: 16 Mar 96 15:59:07 +0100
Message-ID: <xSuVLMD4E3FaUz1@asparagus.tecmania.mcnet.de>
Organization: unorganisierter geht's nimmer...
X-Mailer: MicroDot 1.11beta4 [REGISTERED 004e3f]
X-Gateway: ZCONNECT UH ldb.han.de [UUCPfZ V5.73 U002]
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-ZC-Telefon: V+49-6021-412696
X-ZC-Post: Merlostrasse 5a ú 63741 Aschaffenburg