检测负数

The*_* do 4 c++

我有一个代码,用户必须通过它> 0数字,否则此代码将抛出。使用此arg的类型作为std :: size_t无效,因为负数会给出大的正数。如果我使用签名类型,还是有其他方法可以强制执行它,这是一种好习惯吗?

void f(std::size_t number)
{
//if -1 is passed I'm (for obvious reason) get large positive number
}
Run Code Online (Sandbox Code Playgroud)

ice*_*ime 5

我认为这个问题没有明确的正确答案。您可以看一下Scott Meyers对这个问题的看法:

一个问题是,无符号类型会降低您检测常见编程错误的能力。另一个是,它们通常会增加您的类的客户错误使用这些类的可能性。

最后,要问的问题确实是:您是否需要unsigned类型提供的额外可能值?