检查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 语言问题并且不能使用 !
和 ||
,否则尽量不要使用替代运算符表示,它们会使人感到困惑。
如果两者都是 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 语言问题并且不能使用 !
和 ||
,否则尽量不要使用替代运算符表示,它们会使人感到困惑。