可变缓冲区?

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,因为当我改变所有intfloat最终结果时总是0.00000甚至是%lf.

Sou*_*osh 6

您正在为下面的行击中未定义的行为

 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,只改变变量的数据类型是不够的.您还需要更改相应的格式说明符.