直接看代码
列出1000-2000之间的闰年,约有250上下
当返回值是1时, 返回数据有 492个, 数量明显是错的. 而在取消注释后,结果就是242个,正确
那么,这是为什么呢? 有注释时, 1001执行到 if (a%4 == 0), 不满足, 此时在我看来应该是没有返回值的, 但是实际上1001时, bu_year(y) == 1 成立, 执行printf. 所以1001,在自定义函数中, 不满足任意一条返回分支时, 函数返回了1. 诸如此类的还有1005, 1009等,它们都只比闰年多1, 但同样不是闰年, 却没有1002, 1003等年数,由此可见, 返回值或许不是默认返回1, 而是某种随机值.
当我们尝试 return 2.
结果有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 下的语句时,返回每一个自定义函数中判断表达式的结果,如果在主函数中判断相等,它就打印出来?
现在还不知道原理,我将在未来完善它.如果有大佬知道, 希望能指教一二.