Article View: fras.text.programmieren
Article #92SAS-C: Seiteneffekt bei printf()
From: Michael Bergmann
Date: Sat, 16 Mar 1996 14:59
Date: Sat, 16 Mar 1996 14:59
52 lines
2798 bytes
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.deShow 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