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()
Author: 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/
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