【发布时间】:2018-08-27 20:27:58
【问题描述】:
我试图解决 projecteuler.net 中的问题集 16。我试图找到2^1000,为此我在C 中编写了一个带有名为power() 的函数的代码。这里的问题是,如果我将printf() 放在power() 中以获得结果值,答案是@ 987654326@ 但如果我在power() 中使用返回值并尝试从main() 打印结果,则答案是-2147483648.000000。
这是我的代码。
#include <stdio.h>
int power(double base,int ex)
{
int i = 1;
double final = 0;
double ans = 1;
while (i <= ex){
ans *= base;
i++;
}
printf("%lf\n",ans); // return ans;
}
int main()
{
double num;
double result;
int power_value;
printf("enter the base value\n");
scanf("%lf",&num);
printf("enter the exponent value\n");
scanf("%d",&power_value);
power(num,power_value); //result = power(num,power_value)
//printf("%lf",result);
}
【问题讨论】:
-
c 不是 c++ 而
double main()肯定不是 c++ -
C 和 C++ 是两种截然不同的语言。如果您使用 C 编程并希望在 C 中找到解决方案,则仅使用该标记。
-
至于你的问题,你应该对the standard types and their ranges做更多的研究。如果您想要标准类型之外的任何内容,请尝试查找 bignum 库。
-
这个projecteuler问题的想法是找到一种方法来计算
2^1000的数字总和而不计算2^1000,因为(正如所有其他人提到的)它不适合通用数据类型。