为啥多加个if就报错了

img

img


错误:缺少返回值

因为所有的return都是有条件的,编译器不能确定这个函数一定能有return语句被执行到

你在return外面加if,那么就必须再加个else,或者至少有一个独立于if的return
否则有时能返回,有时不返回,算怎么回事

img


int函数必须有返回值,所以,你在if条件结束后,再加一个返回即可

因为函数有返回值,就要求所有的情况下都有返回,加了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不成立的结果。

见图

img

问题不难,有疑问来交流;