gpt4 book ai didi

c - 可变缓冲区?

转载 作者:行者123 更新时间:2023-11-30 19:56:12 25 4
gpt4 key购买 nike

我有这段代码计算一个值的指数幂,这两个值都是由用户输入的,例如,用户输入2^3 = 8,它应该像这样工作,但出了问题,最终结果是608 ,当我在计数器中的 pwra 函数中调试时,即使在计数器启动之前,结果值也已设置,我不知道从哪里设置,因为我没有设置它,所以最终结果是 608。我觉得它是一个缓冲区问题,但我已经尝试了 fflush in 和 out ,但不起作用。因此,当我将此代码复制到新窗口时,它会工作一段时间,然后再次相同,早些时候它显示 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 时,最终结果即使使用 %lf 也始终为 0.00000。

最佳答案

您正在点击undefined behavior对于下面的行

 result = result*num;

因为您尚未初始化结果。未初始化的自动局部变量的初始值是不确定的。使用它调用 UB。

始终初始化局部变量,例如

 int count = 0 , result = 0 ; //0 is for illustration, use any value, but do use

然后是这样的情况,你想将所有int更改为float,仅更改变量的数据类型是不够的。您还需要更改相应的格式说明符。

关于c - 可变缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36735396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com