dan*_*jar 164 c++ null pointers if-statement null-pointer
检查指针是不是NULL通过简单写入if(pointer)或我必须使用它是否安全if(pointer != NULL)?
Jon*_*oni 183
您可以; 空指针被隐式转换为布尔值false,而非空指针转换为true.从C++ 11标准,有关布尔转换的部分:
算术,无范围枚举,指针或指向成员类型的指针的prvalue可以转换为类型的prvalue
bool.将零值,空指针值或空成员指针值转换为false; 任何其他值都转换为true.类型std::nullptr_t的prvalue可以转换为类型的prvaluebool; 结果值是false.
bil*_*llz 40
是的,你可以.
这是C++标准转换的一部分,它属于布尔转换子句:
§4.12布尔转换
算术,无范围枚举,指针或指向成员类型的指针的prvalue可以转换为bool类型的prvalue.零值,空指针值或空成员指针值转换为false; 任何其他值都转换为true.类型为std :: nullptr_t的prvalue可以转换为bool类型的prvalue; 结果值为false.
Yu *_*Hao 29
是的你可以.事实上,我更喜欢使用,if(pointer)因为一旦你习惯它,它就更容易读写.
还要注意引入的C++ 11 nullptr优先于NULL.
Gri*_*han 12
问题已得到解答,但我想补充一点.
我会永远喜欢if(pointer)的,而不是if(pointer != NULL)和if(!pointer)替代if(pointer == NULL):
机会少写了一个bug的代码,想如果我拼错平等检查操作==与=
if(pointer == NULL)可拼错if(pointer = NULL)所以我会避开它,最好是只if(pointer).
(我也在一个答案中提出了一些尤达条件,但这是不同的事情)
同样地while (node != NULL && node->data == key),我会简单地写while (node && node->data == key)一下对我来说更明显(表明使用短路).
| 归档时间: |
|
| 查看次数: |
84032 次 |
| 最近记录: |