自定义函数

14 篇文章 0 订阅
13 篇文章 0 订阅
#include<stdio.h>

int max(int,int);   //声明时,如果有形参,可以不写形参名称,但一定要有形参类型。
                    //被调用函数要在使用之前声明,可以在调用函数内部声明,也可以在外部声明
int main()
{
    int a,b,c;      //函数名和变量名不能重复,函数名和变量名之间也不能重复,如int max;就会报错
    scanf("%d%d",&a,&b);
    c=max(a,b);
    printf("max=%d\n",c);

    return 0;
}

int max(int c,int d) //定义时,如果有形参,形参类型和名称都要有,来存储调用函数传进来的数值
{
    int x,y;
    x=c>d?c:d;
    
    return x;     //return x;或者return(x);
}
定义了非void类型函数,而没有return语句,
各种编译器(包括gcc)既没有错误,也没有警告!
但如果函数内部有return语句,并带有返回值,而函数类型为void,则一定会报错
但是如果return语句不带有返回值(即return;),函数类型为void是可以的,表示返回调用函数


关于max函数有个问题,如果max函数没有return语句也能把x的值由函数名返回?
确实,没有return语句最后结果竟然能取到较大值。(多个编译器上包括gcc都试过)
尝试在x=c>d?c:d;这句下面进行赋值操作,结果发现y=5这种赋值操作对最后结果没有影响,仍然能取到较大值

但如果把形参拿来做赋值操作,如y=d; ,结果就会错误,不能取到较大值,不知道为什么。

不过这没关系,按照正确的规则来写,结果肯定是对的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值