关于C语言整型函数中未写return语句的返回值

事情是这样的,我在刷题的过程中写了两个返回值是整型的函数来求两个数的最大公因数和最小公倍数,但是由于粗心求最小公倍数的函数中缺少了return语句,但在DevC++中得到了正确的结果。代码如下

#include<stdio.h>
int fun1(int a, int b)
{
    int i,t=1;
    for(i=1;(i<=a)||(i<=b);i++)
    {
   
        if((a%i==0)&&(b%i==0))t=i;
    }
    return t;
}
int fun2(int a,int b)
{
    int t,r;
    t=fun1(a,b);
    r=a*b/t;
}
int main()
{
    int a,b;
   scanf("%d%d",&a,&b);
   printf("%d %d",fun1(a,b),fun2(a,b));
    return 0;
}

于是我就很好奇整型函数缺少return语句的返回值是什么。

经过不严谨的测试之后,我似乎找到了一些规律,还希望各位大神能指正我的错误或是帮我解答一下。

在DevC++中有如下规律:

(一)一般情况下,返回值都为1。

#include<stdio.h>
int fun1()
{

}
int fun2()
{
	int a;
	a=2;
}
int main()
{
	printf("%d %d",fun1(),fun2());
	return 0;
}

(二)若缺少return语句的函数调用了正常的整型函数,则返回值为被调用的那个整型函数的值。

#include<stdio.h>
int fun1()
{
	return 2;
}
int fun2()
{
	fun1();
}
int main()
{
	printf("%d %d",fun1(),fun2());
	return 0;
}

 

(三)若缺少return语句的调用了正常的整型函数,且进行了运算并将运算结果赋给了一个变量(若无赋值语句则出现第二条规律的情况),则返回值为赋给变量的值。

#include<stdio.h>
int fun1()
{
	return 2;
}
int fun2()
{
	int a=fun1()*3;
}
int main()
{
	printf("%d %d",fun1(),fun2());
	return 0;
}

 

(四)若有多条第三条规律中的赋值语句,则返回值为最后一条赋值语句中赋给变量的值。

#include<stdio.h>
int fun1()
{
	return 2;
}
int fun2()
{
	return 3;
}
int fun3()
{
	int a=fun1()*5;
	int b=fun2()*7;
}
int main()
{
	printf("%d %d %d",fun1(),fun2(),fun3());
	return 0;
}

 

 本人才疏学浅,实在搞不清楚其中原理是什么,还望各位大神不吝赐教。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

景彡先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值