我必须对巨大的数字进行平方(一些数字大于 long long int)。当从类型“int”分配给类型“bignum”时,我遇到了类型不兼容的问题 下面给出了代码,并提供了声明。请帮帮我。
typedef struct {
char digits[MAXDIGITS]; /* represent the number */
int lastdigit; /* index of high-order digit */
} bignum;
bignum add_bignum(bignum a, bignum b);
bignum square(bignum x);
bignum square(bignum x){
bignum c;
.
.
.
return c;
}
bignum modified_fibo(int A,int B,int N){
bignum fibo[N-1];
int i;
fibo[0]=initialise(A);
fibo[1]=initialise(B);
bignum val;
for(i=2;i<N;i++){
val = bignum_square(fibo[i-1]);
fibo[i] = add_bignum(val,fibo[i-2]);
}
return fibo[N-1];
}
我在行 val = bignum_square(fibo[i-1]);
中遇到错误最佳答案
当编译器发现对尚未定义的函数的函数调用时,它会隐式声明一个返回类型为 int
的函数。你定义一个函数
bignum square(bignum x);
但是没有
bignum bignum_square(bignum x);
所以编译器隐式声明
int bignum_square(bignum x);
你会得到一个错误,因为在这里使用隐式声明的函数时,你将 int
分配给了 bignum
val = bignum_square(fibo[i-1]);
按照评论中的建议使用您定义的函数
val = square(fibo[i-1]);
关于c - 从类型 'bignum' 分配给类型 'int' 时的类型不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33844725/