我使用以下C代码

时间:2018-01-18 13:05:58

标签: c function return printf declaration

float pie = 3.14;


int main()
{   
 float r,res;
 printf("Enter radius value\n");
 scanf("%f", &r);

  res=area( r );
  printf("Area = %f\n",res);
 //printf("Circumference =  %f\n", circum( r ));
}

float area( float r )
{
 return pie * r * r;
}

我将错误视为' area'的错误类型以及之前的隐含声明' area'在这里,但如果我改为整数

这个代码工作正常

在IDE中它可以正常工作,如果我将该代码更改为整数浮点饼= 3.14;

    int main() {
    int r,res; 
    printf("Enter radius value\n"); 
    scanf("%d", &r); res=area( r ); 
    printf("Area = %d\n",res); 
     } 
    int area( int r )
     { 

return pie * r * r;
 }

没有声明它适用于整数,但对于浮点数我得到错误为什么?

3 个答案:

答案 0 :(得分:1)

C允许隐式函数声明,因为你在第一次调用它之前没有给出一个显式函数声明,所以用这个原型隐式声明它:

int area(); // Implicit arguments

以后当你发表真实声明时,他们会发生冲突。

如果您希望函数返回实际的浮点数,提供前向声明

float area(float);

int main()之前添加上述行并解决问号。

顺便说一下,从C11标准(ISO / IEC 9899:2011)开始,隐式函数声明被删除。

答案 1 :(得分:0)

每当您在整个程序中使用通用术语或变量时 就像你在这里做的那样

validatorFactory

改为写

float pie = 3.14

并且出现了错误, 无论何时使用函数,都必须提供它的明确声明,或者换句话说它的原型。 在C文件上键入此内容

#define pie 3.14 //this is a macro

float area(float r) 

如果你觉得懒惰,那么在主要功能之前使用你的功能,而不是在主功能之后使用它。

答案 2 :(得分:-1)

你应该在函数定义后进行函数调用。否则在头文件中声明函数并使用它。