为了账号安全,请及时绑定邮箱和手机立即绑定

编译器如何找到丢失的 return 语句?

编译器如何找到丢失的 return 语句?

一只甜甜圈 2022-05-21 20:31:09
我有一个在数组中查找元素的函数(二进制搜索)。我收到一条错误消息,提示“缺少退货声明”。(评论部分)编译器如何理解缺少 return 语句?当仅使用“if”时,编译器如何找到所有执行路径。没有 else-if 正在实施public static int rank(int key, int []a, int lo, int hi)    {        if(lo>hi) return -1;        int mid= lo+(hi-lo)/2;        if(key<a[mid]) return rank(key,a,lo,mid-1);        if(key>a[mid]) return rank(key,a,mid+1,hi);        //else return mid;    }
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

编译器如何找到所有的执行路径?

它不是很聪明,它无法检测逻辑上永远无法到达的分支,它只是希望所有分支都以return有关“不够聪明”的情况,请参见另一个问题。

在您的情况下,它发现可能没有任何if条件为真,因此您一直到方法结束,它想在return那里看到 a 。

在您的情况下,这种推理也是正确的:据我所知,它很可能会贯穿所有分支。


查看完整回答
反对 回复 2022-05-21
  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号