我有这个代码来计算一个值的指数幂,两者都是由用户输入的,例如,用户输入2 ^ 3 = 8,它假设这样工作但是有些错误,最终结果是608 ,当我在计数器中的pwra函数中调试时,甚至在计数器启动之前设置结果值,从那里我不知道因为我没有设置它所以最终结果是608.我觉得它是缓冲区问题但是我我试过fflush进出,它不起作用。因此,当我将此代码复制到一个新窗口时,它会工作一段时间,然后再次相同,之前它会显示624作为最终结果。
#include <stdio.h>
int pwra (int, int);
int main()
{
int number, power, xx;
printf("Enter Number: ");
scanf("%i", &number);
printf("Enter Number: ");
scanf("%i", &power);
xx=pwra (number,power);
printf("Result: %i", xx);
return 0;
}
int pwra (int num, int pwr)
{
int count, result;
for(count=1;count<=pwr;count++)
{
result = result*num;
}
return result;
}
另一件事,如何计算float
的指数值,因为当我将所有int
更改为float
时,即使使用{{1},最终结果始终为0.00000 }。
答案 0 :(得分:6)
您正在点击undefined behavior下面的行
result = result*num;
因为您尚未初始化result
。未初始化的自动局部变量的初始值是不确定的。使用它调用UB。
始终初始化您的本地变量,例如
int count = 0 , result = 0 ; //0 is for illustration, use any value, but do use
接下来,您希望将所有int
更改为float
,只更改变量的数据类型是不够的。您还需要更改相应的格式说明符。