鱼C论坛

 找回密码
 立即注册
查看: 947|回复: 2

[已解决]函数

[复制链接]
发表于 2024-1-2 12:56:33 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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)呢
最佳答案
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                         ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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                         ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 04:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表