C 函数如果漏掉了一个或多个返回分支,会返回什么

直接看代码

0909fc93e98e42118cd98c15ca99f4cf.pnga1b0649d82db4e0da4c77a43c91f63ed.png051aff742545467eadfcfc72bd6e03a5.png

列出1000-2000之间的闰年,约有250上下

   当返回值是1时, 返回数据有 492个, 数量明显是错的. 而在取消注释后,结果就是242个,正确

680ef75c532146ddb03be74637895fb3.png      那么,这是为什么呢?  有注释时, 1001执行到 if (a%4 == 0), 不满足, 此时在我看来应该是没有返回值的, 但是实际上1001时, bu_year(y) == 1 成立, 执行printf.   所以1001,在自定义函数中, 不满足任意一条返回分支时, 函数返回了1. 诸如此类的还有1005, 1009等,它们都只比闰年多1, 但同样不是闰年, 却没有1002, 1003等年数,由此可见, 返回值或许不是默认返回1, 而是某种随机值.

 

 当我们尝试 return 2.     

4cbb215db59f4377b67e46b12dca4fb6.pngc253334855194cbbb819421ea7b8664c.png

a83a67200f7c42ca9becf99786f7c1b7.png

结果有492个, 但和 return 1 的数据不一样. 返回了像 1002, 1006等这样的比闰年大2的年数.

到底有什么规律呢?

 

当我们尝试 return 3.

结果类似.    返回了1003,1007等比闰年大3的年数.

 

 

我猜测, 出函数前的判断表达式的结果为return a, 那么函数就会返回 a, 其他的结果(除去满足判断表达式的) 就不会返回.   比如,  return 2时, 1002不是闰年, 但1002%4==2, 就会返回2, 所以结果数据中就有了这类数.

当自定义函数是 return 2时, 主函数  == 3,  结果有1003,1007等,   return3时, 主函数 == 4,结果

猜测错误,实际是  当漏了返回分支且不执行if 下的语句时,返回每一个自定义函数中判断表达式的结果,如果在主函数中判断相等,它就打印出来?

现在还不知道原理,我将在未来完善它.如果有大佬知道, 希望能指教一二.

 

 

 

 

 

 

 

 

 

 

                                                                                                                            

 

 

 

 

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值