hanyf 发表于 2024-1-2 12:56:33

函数

#include <stdio.h>
int main(void)
{float a,b,c;
int max(float a,float b);
scanf("%f,%f",&a,&b);
c=max(a,b);
printf("the result is:%.2f\n",c);
return 0;
}
int max(float x,float y)
{
float z;
if(x>y)
    z=x;
else
    z=y;
return z;
}
请问为什么只能是int max(float a,float b),不能是int max(a,b)呢

FishC 发表于 2024-1-2 12:56:41

函数声明中需要指定参数类型,因此必须将参数名和类型一起写出来。在函数定义中可以省略参数的类型,因为已经在函数声明中指定了。所以在这个例子中,int max(float a,float b) 是函数声明,而 int max(a,b) 是不完整的函数定义。如果想要省略参数类型,可以这样写函数定义:

int max(float x,float y)
{
float z;
if(x>y)
    z=x;
else
    z=y;
return z;
}

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-1-2 13:39:36

本帖最后由 jackz007 于 2024-1-2 13:46 编辑

      代码格式一定要工整,尤其是缩进的层次一定要分明,只有这样才能方便查错和阅读。
#include <stdio.h>

int main(void)
{
      float a , b , c                  ;
      int max(float a,float b)         ; // 这个是函数声明,主要强调的是输入参数及返回值的类型,你甚至可以写成 int max(float , float) ;
      scanf("%f,%f",&a,&b)             ; // 这样写,在运行中容易出问题,最好去掉 "%f,%f" 中间的 ",",写成 scanf("%f%f",&a,&b) ;
      c = max(a , b)                   ; // 这个是函数调用,不写参数及返回值的类型,有携带实参
      printf("the result is:%.2f\n",c) ;
      return 0                         ;
}

int max(float x , float y)               ; // 返回值 z 是 float,所以,应该写成 float max(float a , float b)
{
      float z                        ;
      if(x > y) z = x                  ;
      else z = y                     ;
      return z                         ;
}
页: [1]
查看完整版本: 函数