我正在学习C函数构造,我正在尝试用两个参数创建一个指数函数:base&指数。
#include <stdio.h>
#include <stdlib.h>
int power(int a,int b){
int c;
int i;
c=1;
for(i=1;i<=b;++i){
c=c*a;
}
return c;
}
int main(){
int nice=power(5,20);
printf("answer =%d , and size is=%d ", nice, sizeof(nice));
return 0;
}
当我执行程序时,它给出了以下输出:
answer = 1977800241,大小= 4
编辑:
但是当我执行power(5,2)
时,它会得到25的完美结果。
答案 0 :(得分:0)
整数溢出。您必须使用unsigned long long
或long long
。
#include <stdio.h>
#include <stdlib.h>
typedef long long ll;
ll power(ll a,ll b){
ll c,i;
c=1;
for(i=1;i<=b;++i){
c=c*a;
}
return c;
}
int main(){
ll nice=power(5,20);
printf("answer =%lld , and size is=%lld ", nice, sizeof(nice));
return 0;
}
你会对此有一个好主意 - &gt;阅读此SO question。
然后你必须编写自定义函数来操作乘法。使用int arr[100]
来保存大数字的数字,然后相应地相乘.C / C ++不提供BIgInt
Java
之类的任何内容,你必须构建它。