检查2个指针是否为空

check if 2 pointers are null or not

如果两者都是 nullptr,用这种方法检查是否安全,或者有更好的方法吗? 谢谢。

#include <iostream>

using namespace std;

int main()
{
    int *x;
    int *y;
    
    if (not (x or y))
    {
      std::cout<<"both are nullptr";
    }
    
    return 0;
}

首先,您应该使用实际的运算符名称(!||)来提高可读性(在您看来这会降低可读性,但是一旦您掌握了所有的运营商,你会发现这样更容易)。

是的,这是检查两个指针​​是否有效的有效方法,但一开始有点混乱(再一次,可读性)。最好使用 &&(and) 运算符:

if (!x && !y)

这会检查 x y 是否都不是空指针。

这是布尔代数的基本Law 1 of De Morgan's laws(析取的非),所以和if(!x && !y)完全一样。

就是说,除非您有 ISO 语言问题并且不能使用 !||,否则尽量不要使用替代运算符表示,它们会使人感到困惑。