C++ 带有if station的函数没有返回值

C++ 带有if station的函数没有返回值,c++,C++,如果不满足条件,如何从函数返回。 我试着做一个除法函数,它会返回2个数的除法结果,但是如果它被零除法,我怎么会什么也不返回 int div(int n1, int n2) { if (n2 > 0) { return n1 / n2; } } 我在编译时收到以下警告: 警告:控件到达非无效函数的末尾 我理解它的意思,但是如果我不想返回一个值,在n2为0的情况下,我应该放什么 如果函数具有返回类型,则必须返回某些内容。因此,您可以: 返回一个sent

如果不满足条件,如何从函数返回。 我试着做一个除法函数,它会返回2个数的除法结果,但是如果它被零除法,我怎么会什么也不返回

int div(int n1, int n2)
{
    if (n2 > 0)
    {
        return n1 / n2;
    }
}
我在编译时收到以下警告:

警告:控件到达非无效函数的末尾


我理解它的意思,但是如果我不想返回一个值,在n2为0的情况下,我应该放什么

如果函数具有返回类型,则必须返回某些内容。因此,您可以:

返回一个sentinel值,函数和调用者同意该值表示“非值”,例如:

intdiv(intn1,intn2)
{
如果(n2!=0)
{
返回n1/n2;
}
其他的
{
return-1;//或者任何对您的用例有意义的内容。。。
}
}
如果没有可用的sentinel值可供使用,则可以改用(仅限C++17及更高版本),例如:

#包括
标准::可选分区(内部n1,内部n2)
{
如果(n2!=0)
{
返回n1/n2;
}
其他的
{
返回std::nullopt;
}
}
或者,您可以更改函数以使用输出参数和
bool
返回值,例如:

bool div(int n1、int n2、int和result)
{
如果(n2!=0)
{
结果=n1/n2;
返回true;
}
其他的
{
返回false;
}
}

否则,您只需抛出一个异常,例如:

#包括
内部分区(内部n1、内部n2)
{
如果(n2==0)
{
throw std::无效的_参数(“n2不能为0”);
}
返回n1/n2;
}

如果在这种情况下不需要返回值,您需要什么?函数的调用者应该得到什么?
抛出
异常?使用std::optional并在“else”中返回std::nullopt您能更准确地说明您想要发生什么吗?我们知道您不想返回值。你想做什么?没有正确的事情可以做。有许多不同的方法可以解决这个问题,每种方法都有其优点和缺点。使用任何适合你需要的方式。非常感谢你的解释。