对于为什么我的函数定义没有在这里被弄糊涂了。
double formula(double far, double cel);
double getDegrees(double far);
void display(double far, double cel);
int main()
{
double far = 0, cel = 0;
far = getDegrees(far);
cel = formula(far, cel);
display(far, cel);
return 0;
}
double getDegrees(far)
{
printf("Enter degrees fahrenheit\n");
scanf_s("%lf", &far);
return far;
}
double formula(cel, far)
{
cel = (5.0 / 9) * (far - 32);
return cel;
}
void display(cel, far)
{
printf("%lf\n", cel);
return;
}
答案 0 :(得分:1)
您的函数声明包含参数的类型信息,您需要在函数定义中重复此信息。例如:
double getDegrees(double far)
{
printf("Enter degrees fahrenheit\n");
scanf_s("%lf", &far);
return far;
}
编译器不会自动将类型信息匹配起来。
答案 1 :(得分:0)
如果您在代码中的int main()
上定义了函数,那么您的程序就知道您将使用哪些函数,可以用两种方式声明它们:
double formula(double far, double cel); // (1) type + variable name
double formula(double, double); // (2) only type
但是在int main() {...}
之后,您必须以(1)
标题声明函数,这样函数就知道向其发送了什么变量,如何调用它们以及如何调用它们。类型为,因此代码为:
double formula(double far, double cel); // or double formula(double, double)
double getDegrees(double far);
void display(double far, double cel);
int main() { /* main block, functions calls etc. */}
double formula(double far, double cel) { /* function declaration */ }
double getDegrees(double far) { /* function declaration */ }
void display(double far, double cel) { /* function declaration */ }
为了知道您的代码中是否存在任何警告或错误,请确保使用以下标记进行编译:{{1}}。
技巧也很简单--Werror -Wall -Wextra -pedantic
函数没有要返回的任何“信息”,因此您不必在其体内使用void
。