这段代码出了什么问题?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void x_ispositive(int x) /*check if the number is positive*/
{
if (x>0)
printf("It's positive");
else
if(x<0)
printf("It's negative");
}
void x_isnull(int x) /*check if the number is equal zero*/
{
if(x==0)
puts("It's null");
else
puts("Equação inexistente...");
}
int delta(int a, int b, int c) /*calculates delta*/
{
int dt;
dt = pow(b,2) - (4*a*c);
return dt;
}
int main()
{
int a, b, c, num;
puts("Enter the terms of a quadratic equation.");
scanf("%d %d %d", &a, &b, &c);
x_isnull(a);
delta(a,b,c);
num = delta;
x_ispositive(num);
}
错误位于第40行(num = delta;
):
[Error] invalid conversion from 'int (*)(int, int, int)' to 'int' [-fpermissive]
这段代码出了什么问题?
答案 0 :(得分:0)
num = delta;
尝试将名为delta
的函数分配给名为num
的函数指针。这当然不起作用,因为num
是int
,而不是函数指针。如果您希望此作业有效,则可以将num
声明为int (*num)(int, int, int)
,但我认为您要做的是将delta(a,b,c)
的值分配给num,因为它返回int
1}}价值。你几乎就在那里,你只需要改变这些界限:
delta(a,b,c);
num = delta;
为:
num = delta(a,b,c);