@ReiniBugman: Wenn beispielsweise das Literal -1L, sprich der Wert -1, an die Funktion übergeben wird, so setzt es Bomben und Granaten. Der Wert wird für die Funktion fact (da der Parameter 'n' als "unsigned" deklariert worden ist) zu 4 Milliarden und noch ein bißchen etwas, eben 2 ^ 32 - 1. Deswegen bitte nicht mit unsigned bei einem solchen Parameter auffahren !!!
Wenn ein negativer Wert übergeben wird, so muß Null (0.0) zurückgeliefert werden. if(!fac(-1)) printf("A/C error (according to the pocket calculator)\n"); Alles andere ist unsaubere Programmierung, bitte dann nicht wundern, wenn das eigene Programm instabil ist.
Die Funktion schreibt man in eine Datei mymath.c
Einen entsprechenden Prototyp in mymath.h: double fac (int n);
In das Hauptprogramm bzw. die Datei mit der aufrufenden Funktion der Funktion fac schreibt man #include <mymath.h> bzw. #include "mymath.h" wenn sich mymath.h im selben Verzeichnis wie das C/C++ Projekt befindet.
|