如果a是一个指针,测试if(a)和if(a!= NULL)之间是否存在差异?哪一个更好?
答案 0 :(得分:5)
它是一样的,但第二个让你的意图更清晰。
如果您使用的是C ++ 11,则应使用nullptr,因为它不允许int x; if(x==nullptr){...}
答案 1 :(得分:3)
没有区别。使用哪个使您的代码对您自己和他人更具可读性。如果它变得冗长,或者上下文清楚,请随意省略显式NULL:
void * p = std::malloc(n);
if (!p) throw std::bad_alloc();
答案 2 :(得分:0)
你的编译器会为两者发出相同的代码,但是if(a)
是一个完全正常的C语言,而这正是你的程序员期望看到的。