【发布时间】:2012-07-09 19:10:23
【问题描述】:
我有一些疑问:我想测试在函数调用之前是否已经分配了一些数组,低和高。函数从这个测试开始:
bool myMgr::compute(myInput *solvInput, double* low, double* high)
{
if(high==NULL||low==NULL)
return false;
//...
}
我在测试什么,我测试对了吗?
感谢和问候
【问题讨论】:
-
if( !high || !low )看起来更好,也能胜任。 -
@SingerOfTheFall 如果
high和low是指针。在它们上使用!运算符会产生误导和混淆。他最初的if是我的首选形式,虽然我对喜欢if ( high == 0 || low == 0 )的人有一些理解。 (我不同意,但这是一个值得商榷的立场。)当然,如果你使用的是 C++11,那就是if ( high == std::nullptr || low == std::nullptr )。 -
学究式地,您不是在调用之前而是在调用之后测试分配。测试在函数体内。此外,测试分配失败不是很实用(除了在一些非常特殊的情况下):通常,您不能对它们做任何事情,只能中止一切。如果这就是你要做的事情,为什么不直接崩溃呢?
-
@James Kanze 为什么我更喜欢
if ( high == 0 || low == 0 )而不是我的解决方案,有什么不同? -
@fork0 我的老板不让我崩溃