碰到的一个有关函数返回值的bug
今天一个朋友遇到一个问题,结果是函数一个条件缺少了返回值。
如图,当第二个if条件不符合的时候函数并没有写返回的代码
于是我专门输出这个函数试了试
有意思的来了,出现了两种情况:
如果我输入的月份正确,但日错误,那么返回值是月份的天数,即monthday[i]
可如果我连月份都输入错误,那么返回值则是我输入的月份数
在这里猜想是不是没有返回值的时候返回最后用过的数?
我们来测试一下
结果是4
但如果我们改一下代码
输出结果又变成了6
如果不用变量进行比较呢?
结果返回值变成了1
如果一个用变量比较,一个用常数比较呢?
结果是4
下面再试一试const会怎么样?
结果仍是4
似乎可以发现规律了,当没有返回值时,函数可能会寻找最后使用过的变量的值返回,或者当找不到变量的时候,返回1
但内部的原理尚不清楚,可能需要后期学习编译原理之类的课程才能了解吧
更新下,不写返回值的函数在某些OJ上是会RE的!!!!!
作者:qbning
-------------------------------------------
个性签名:曾经的我们空有一颗望海的心,却从没为前往大海做过真正的努力
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!