try*_*llz -2 c variables initialization
我有这个代码来计算一个值的指数幂,这两个都是由用户输入的,例如,用户输入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;
}
Run Code Online (Sandbox Code Playgroud)
另外一件事,我如何计算a的指数值float,因为当我改变所有int到float最终结果时总是0.00000甚至是%lf.
您正在为下面的行击中未定义的行为
result = result*num;
Run Code Online (Sandbox Code Playgroud)
因为你没有初始化result.未初始化的自动局部变量的初始值是不确定的.使用它调用UB.
总是初始化你的局部变量,比如
int count = 0 , result = 0 ; //0 is for illustration, use any value, but do use
Run Code Online (Sandbox Code Playgroud)
然后来到这个案例,你想要改变所有的ints float,只改变变量的数据类型是不够的.您还需要更改相应的格式说明符.