|
100020001 -100
Das zweite Programm zeigt ebenfalls schlimme Effekte:
#include <stdio.h>
int i;
int f (int x)
{ int h;
h = x + i; /* globale Variable ! */
i = i + 10; /* Seiteneffekt */
return(h);
}
int g (int x)
{
return(f(i) + x); /* globale Variable ! */
}
void main(void)
{
i = 0; /* 1. Aufruf mit i = 0 */
printf("%d %d %d\n", i, f(i), i);
printf("%d %d %d\n", i, g(i), i);
i = 0; /* 2. Aufruf mit i = 0, */
printf("%d %d %d\n", i, f(10), i); /* aber der Konstanten 10 */
printf("%d %d %d\n", i, g(10), i);
}
Es ergibt sich folgende Ausgabe:
0 0 10
10 30 20
0 10 10
10 30 20
|
|
|