, поэтому у меня есть эта функция в C для вычисления мощности, и я использую 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("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);
}
не лучший способ сделать это, я знаю, но это не так
когда я отлаживаю его, значения сканируются правильно (то есть значения верны до того момента, как вызов функции), но затем при входе в функцию a становится 0, а n становится 1074790400, и вы можете догадаться, что будет дальше ...
первая функция вызывается из основного файла, я включил полный код, потому что я действительно понятия не имею, что может происходить, и я даже не могу думать о том, как Google для этого ...
странно, я написал функцию в одном файле, и она отлично работает, но она определенно должна работать в обоих направлениях
есть идеи, почему это происходит?