安全分割功能

Gab*_*iMe 1 c++

我想定义某种安全除法(和模)函数,当尝试除以零时会返回一些预定义值.我不想抛出异常,只是为了返回一些"合理"的值(1?0?)并继续程序流程.显然没有正确的返回值,但我想知道是否有一些标准或已知的方法

Pot*_*ter 6

既然你专门要求C++,你就可以做到

pair< int, bool > safe_div( int lhs, int rhs ) {
    if ( rhs == 0 || lhs == INT_MIN && rhs == -1 ) return make_pair(0, false);
    else return make_pair( lhs/rhs, true );
}
Run Code Online (Sandbox Code Playgroud)

交替地 boost::optional

optional<int> safe_div( int lhs, int rhs ) {
    if ( rhs == 0 || lhs == INT_MIN && rhs == -1 ) return optional<int>();
    else return lhs/rhs;
}
Run Code Online (Sandbox Code Playgroud)

我假设你想要一个整数运算,我添加了一个溢出检查.