求解答,有点搞不懂这个程序了

#include<stdio.h>
int dfs(int num,int mum,int s){
if(s<0||num<0||mum<0)
{
return 0;
}
if(num<0||mum<0)
return 0;
if(num==0 && mum==0&& s==1)
return 1;
if(s==0 && num>0 && mum>=0 )
s=0.5;
}

int main()
{

printf("%d" ,dfs(5,9,2));
return 0;
}
为什么结果会是2

函数返回值是放在eax寄存器的,在程序中,如果有返回值,则会把返回值赋给eax。
如果没有,则会返回eax的默认值。这个值是多少不确定

5,9,2的话,这个函数等于啥也没干,也没有返回语句,2是个随机值吧
我执行这段代码就返回一个垃圾值,不是2

应该掉了一句 return 2;
也就是所有条件都不满足时,等于2。

#include<stdio.h>
int dfs(int num,int mum,int s)
{
    if(s<0||num<0||mum<0)
    {
        return 0;
    }
    if(num<0||mum<0)
        return 0;
    if(num==0 && mum==0&& s==1)
        return 1;
    if(s==0 && num>0 && mum>=0 )
        s=0.5;
    return 2; //补上的这一句
}

int main()
{
    printf("%d" ,dfs(5,9,2));
    return 0;
}

答案错了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632