1

我刚开始尝试学习 C 并且有一个非常基本的问题。下面列出的代码从 mult 函数输出一个错误,指出存在“mult 的冲突类型”

我看不出有什么冲突的类型。但是,如果我要将这些值的数据类型替换为整数,我没有任何问题。我假设我错过了一些非常简单的东西。有什么帮助吗?

#include <stdio.h>

int main()
{
    double number1;
    double answer;

    answer = mult(number1);

    getchar();
    return 0;
}

double mult(double x, double y)
{
  return x * y;
}
4

2 回答 2

3

你在使用它之前没有声明mult,所以编译器隐含地为你声明它为int mult(). 然后编译器找到您的定义并且它不匹配。

尝试在你之前添加一个原型main()

double mult(double, double);

或者只是在之前定义它main()

于 2013-10-23T03:22:42.663 回答
2

有一些问题,一个您mult在声明之前尝试使用的问题,一个解决方法是在声明mult之前main像这样转发:

double mult(double x, double y) ;

或者只定义multbefore main,否则C pre - C99mult将像这样隐式定义int mult(),并且在C99中,正如 Keith 指出的那样,这是违反约束的。最新版本clang会警告您:

函数“mult”的隐式声明在 C99 中无效

并且gcc只会警告您它正在​​被隐式声明,这就是您收到类型冲突的原因。您还尝试在mult此处仅使用一个参数进行调用:

answer = mult(number1);

但它被定义为采用两个参数。最后,您在number1没有初始化的情况下使用它,这意味着它将具有不确定的值。

于 2013-10-23T03:23:58.963 回答