#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; ,结果就会错误,不能取到较大值,不知道为什么。
不过这没关系,按照正确的规则来写,结果肯定是对的。