C ++根据输入

时间:2017-02-08 04:48:07

标签: c++

我知道一个函数只能返回一种类型的值,但我不确定如何用它来表达这一点。

我的函数找到了一个阶乘,如果输入小于0,我想打印一条错误信息。

int fact(int a){
    if (a>=0){
        //calculate factorial
        }
        return(product);
    }
    else {
        cout << "Factorials of negative numbers are not defined\n";
        return(0);
    }
}

这样可行,但我只想在a小于0时显示错误消息。现在,我的负数输出是

Take the factorial of: -2
Factorials of negative numbers are not defined
0

我知道这是一个小小的抱怨,但有没有办法摆脱0?返回NULL仍会打印0.从else语句中删除return(0)会打印4757824。

1 个答案:

答案 0 :(得分:3)

“关注点分离”您的fact()方法既计算阶乘,又打印错误。它真的不应该两个都做!

为什么错误发生时fact()会返回一些已知但不合法的值(比如-1)。然后,调用代码可以检查fact()是否有效。

如果输入太大,不要忘记你会有另一个错误条件......