Also habe ich diese Funktion in C, um eine Potenz zu berechnen, und ich benutze Visual C++ 2010
power.h
void power();
float get_power(float a, int n);
power.c
void power()
{
float a, r;
int n;
printf("-POWER-\n");
printf("Die Basis: ");
scanf("%f", &a);
n = -1;
while (n < 0)
{
printf("Der Exponent: ");
scanf("%d", &n);
if (n < 0)
{
printf("Der Exponent muss größer oder gleich 0 sein!\n");
}
else
{
r = get_power(a, n);
printf("%.2f ^ %d = %.2f", a, n, r);
}
};
}
float get_power(float a, int n)
{
if (n == 0)
{
return 1;
}
return a * get_power(a, n-1);
}
Nicht die beste Art, es zu tun, ich weiß, aber das ist es nicht
wenn ich es debugge, werden die Werte korrekt eingelesen (das heißt, die Werte sind korrekt, bis kurz vor dem Funktionsaufruf), aber dann, beim Eintritt in die Funktion, wird a zu 0 und n wird zu 1074790400, und du kannst dir vorstellen, was als Nächstes passiert...
Die erste Funktion wird aus der Hauptdatei aufgerufen. Ich habe den vollständigen Code eingeschlossen, weil ich wirklich keine Ahnung habe, was los sein könnte, und ich kann nicht einmal darüber nachdenken, wie ich danach googeln soll...
Seltsamerweise habe ich die Funktion in einer einzelnen Datei geschrieben und sie funktioniert einwandfrei, aber sie sollte definitiv in beiden Richtungen funktionieren
Hast du eine Idee, warum das passiert?