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

How does the compiler find the missing return statement?

我有一个在数组中查找元素的函数(二进制搜索)。 我收到一条错误消息,指出存在 'missing return statement'。 (评论部分)

How does the compiler understand that a return statement is missing?

当只使用'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;
    }

How does the compiler find all the execution paths?

它不是很聪明,它无法检测到逻辑上永远无法到达的分支,它只是希望所有分支都以return结尾。请参阅 的其他问题。

在您的情况下,它发现 if 条件中的 none 可能变为真,因此您会跳到方法的末尾,它希望看到一个return 那里。

在你的情况下,这个推理也是正确的:据我所知,它很可能会通过所有分支。