C-否定不平等的零与否定不同

  • 本文关键字:不平等 c null
  • 更新时间 :
  • 英文 :


此openssl示例包含这样的代码:

const SSL_METHOD* method = SSLv23_method();
if(!(NULL != method)) handleFailure();

此非零检查是否与以下内容不同?

if(!method) handleFailure();

我能看到他们的方式的唯一原因是它可能更接近语义:" 应该不是无效的(NULL != method),但是如果不是这样(!)然后我们应该处理失败。"

NULL可以保证为 null指针常数。不要将其与 null指针混淆(从理论上讲,这可能具有非零表示形式)。空指针常数可以定义为(void*)00

!(void*)0!0都给出值 1,因此保证任何一个版本可以正常工作。

但是,在指针操作数上使用逻辑运算符被认为是糟糕的实践。与NULL的明确比较使程序员的意图更加清晰 - 这是一种自我记录代码的形式,因此是一个很好的做法。

相关内容

  • 没有找到相关文章

最新更新