c - 从类型 'bignum' 分配给类型 'int' 时的类型不兼容

标签 c struct types int

我必须对巨大的数字进行平方(一些数字大于 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/

相关文章:

c - 如何在 GtkEventBox 中设置 GtkWindow 的不透明度

c - C中的结构内结构

c# - C# 中 long 和 int 的区别?

java - 无法通过在 Java 中键入数字来显式设置 Long 属性

c - POSIX 消息队列 - 重启后它是否仍然存在?

c - “', '\n”、scanf() 和输出屏幕

通过删除前导零来压缩字符大小整数

c++ - 存储未定义长度结构数组的最佳实践

c - 具有必须在 C 中的 .h 文件中公开的属性的私有(private)结构

C++ 在 lists<string> 和 list<std::pair<string, string>> 之间选择返回类型