我得到消息[错误]从'int(*)(int,int,int)'到'int'[-fpermissive]

时间:2017-04-28 22:25:52

标签: c

这段代码出了什么问题?

#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]

这段代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

num = delta;尝试将名为delta的函数分配给名为num的函数指针。这当然不起作用,因为numint,而不是函数指针。如果您希望此作业有效,则可以将num声明为int (*num)(int, int, int),但我认为您要做的是将delta(a,b,c)的值分配给num,因为它返回int 1}}价值。你几乎就在那里,你只需要改变这些界限:

delta(a,b,c);
num = delta;

为:

num = delta(a,b,c);