, so habe ich diese Funktion in C, um eine Leistung zu berechnen, und ich bin mit Visual C++ 2010Funktion immer falsche Werte
power.h
void power();
float get_power(float a, int n);
power.c
void power()
{
float a, r;
int n;
printf("-POWER-\n");
printf("The base: ");
scanf("%f", &a);
n = -1;
while (n < 0)
{
printf("The power: ");
scanf("%d", &n);
if (n < 0)
{
printf("Power must be equal or larger than 0!\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 der beste Weg, es zu tun, ich weiß, aber das ist es nicht
wenn ich es debuggen die Werte werden korrekt gescannt (das heißt, die Werte sind richtig bis kurz vor dem Funktionsaufruf) aber dann wird beim Betreten der Funktion a 0 und n wird 1074790400, und du kannst raten, was als nächstes passiert ...
Die erste Funktion wird aus der Hauptdatei aufgerufen, ich habe den vollständigen Code eingefügt, weil ich wirklich keine Ahnung habe, was sein könnte gehe, und ich kann auf nicht einmal denken, wie es googeln ...
seltsam, ich schrieb die Funktion in einer einzigen Datei und es funktioniert gut, aber es sollte auf jeden Fall in beiden Richtungen
eine Ahnung, warum das passiert?
Ich sehe kein Problem mit Ihrem Code. Gibt es irgendwelche Details, die Sie weggelassen haben, die Dinge verderben könnten? – Jacob
Diese Funktion funktioniert gut auf meinem System. Was sind deine Eingabewerte? – thkala
nicht viel mehr Details zu verzichten, gibt es first.c, die main() hat und ruft power(), nachdem es zu Beginn mit #include "power.h " – frankie