编译器如何找到丢失的 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
那里。
在你的情况下,这个推理也是正确的:据我所知,它很可能会通过所有分支。
我有一个在数组中查找元素的函数(二进制搜索)。 我收到一条错误消息,指出存在 '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
那里。
在你的情况下,这个推理也是正确的:据我所知,它很可能会通过所有分支。