我一直收到错误消息:"' sqrt'的冲突类型"

时间:2015-02-19 01:19:58

标签: c function math protocols sqrt

我刚开始介绍计算机编程课程,我只知道2周的编程。 我一直得到“'sqrt'的冲突类型”,所以我做了一个原型,我仍然收到消息。我已经尝试了一切。

#include<stdio.h>
#include<math.h>

float distance(float a, float b, float c, float d);


int main()
{
   int a,b,c,d,D;
   printf("Please enter the first x coordinate. x1= ");
   scanf("%f",&a);
   printf("Please enter the first x coordinate. y1= ");
   scanf("%f",&b);
   printf("Please enter the first x coordinate. x2= ");
   scanf("%f",&c);
   printf("Please enter the first x coordinate. y2= ");
   scanf("%f",&d);

   D = distance(a,b,c,d);
   printf("Distance = %.4f",D);

   return 0; 
}

float distance(float x1, float x2, float y1, float y2)
{ 
  float d, D, x, y, X, Y;
  x = x1 - x2;
  y = y1 - y2;
  X = x*x;
  Y = y*y;
  d = X + Y;
  float sqrt (float d);
}

1 个答案:

答案 0 :(得分:1)

这是一个函数声明

float sqrt (float d);

如果你想返回你需要的函数调用的结果

return sqrt(d);

另外,冲突类型错误是由sqrt函数原型

引起的
double sqrt(double x);

有一个float等价物

float sqrtf(float x);

所以也许你的函数应该返回

return sqrtf(d);

注意:我没有看到将此计算拆分的任何好处,您可以

return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));