gpt4 book ai didi

c - 用 NULL 否定不平等与否定不同吗?

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:27 25 4
gpt4 key购买 nike

This OpenSSL 示例包含如下代码:

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

这个 not-NULL 检查与下面的不同吗?

if(!method) handleFailure();

我能看到他们的方式的唯一原因是它可以更接近语义:“它应该是非空的(NULL != method),但如果不是这种情况(!),那么我们应该处理失败。”

最佳答案

NULL 保证是一个空指针常量。不要与空指针(理论上可以有非零表示)混淆。空指针常量可以定义为 (void*)00

!(void*)0!0 都给出了值 1 所以任何一个版本都可以保证工作。

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

关于c - 用 NULL 否定不平等与否定不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42715176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com