即使使用默认的else语句,我也会收到此错误
int max_of_four(int a, int b, int c, int d)
{
if((a>b)&&(a>c))
{
if(a>d)
return a;
}
else if((b>c)&&(b>d))
{
return b;
}
else if(c>d)
{
return c;
}
else
return d;
}
答案 0 :(得分:9)
您的第一个if
是问题
if((a>b)&&(a>c))
{
if(a>d)
return a;
// what about else?
}
如果您的外部条件为true
,但内部条件为false
,则不会有return
个案例。
顺便说一下,你的方法是解决这个问题的一种非常复杂的方法,或者至少很难阅读。我会做这样的事情。
#include <algorithm>
int max_of_four(int a, int b, int c, int d)
{
return std::max(std::max(a, b), std::max(c, d));
}
您也可以使用
#include <algorithm>
int max_of_four(int a, int b, int c, int d)
{
return std::max({a, b, c, d});
}
答案 1 :(得分:1)
“控制到达非空函数的结尾[-Werror = return-type]” 在编译阶段发生错误,当有可能(分支)您的非void函数(定义为返回值)无法返回值时。虽然,取决于输入,但它不一定达到那个死胡同。
答案 2 :(得分:0)
在以下情况下首先输入其他条件:
int max_of_four(int a, int b, int c, int d)
{
if((a>b)&&(a>c))
{
if(a>d)
return a;
else
return d;
}
else if((b>c)&&(b>d))
{
return b;
}
else if(c>d)
{
return c;
}
else
return d;
}