因为所有的return都是有条件的,编译器不能确定这个函数一定能有return语句被执行到
你在return外面加if,那么就必须再加个else,或者至少有一个独立于if的return
否则有时能返回,有时不返回,算怎么回事
因为函数有返回值,就要求所有的情况下都有返回,加了if以后,只在if满足时有返回值,不满足时没有返回值,需要改成:
if(count == 0) return -1;
else return 0;//返回什么根据你自己的需要
简单来说就是原来统一返回-1,现在只有count为0的时候返回-1,没有指定count不为0的返回,你得确保所有情况都有返回结果
图1中报错,是没有区分业务逻辑,和程序逻辑;
按业务逻辑看,count要么在for中找到值,返回;要么没找到count为0,在15行返回,没有其他可能了。;
但是程序逻辑做不了这样的推断,在程序的逻辑里, 15行以后也有一个分支,但是后面的代码没有返回值,就报错了。
你把第10行的return 改成break,就可以看出来,15行后面少个分支。
应该考虑一下所有if不成立的结果。
见图
问题不难,有疑问来交流;