gpt4 book ai didi

c++ - 定义双感叹号?

转载 作者:IT老高 更新时间:2023-10-28 21:37:30 25 4
gpt4 key购买 nike

我了解双感叹号的作用(或者我想我了解),但我不确定它是如何在随机对象上定义的。例如在下面的代码片段中:

Assignment *a;
if (!getAssignment(query, a))
return false;
hasSolution = !!a;

if (!a)
return true;

我如何知道双感叹号会产生什么值?换句话说,它总是转换为 true 吗?错误的 ?或者你可以为它定义一个行为,比如执行一个方法来确定结果(对象如何知道在这种情况下如何行动)?由于所有这些感叹号的事情,我对这段代码有点困惑。任何解释都值得赞赏。

希望我说得清楚,谢谢。

最佳答案

a 是一个指针。在 C++ 中,nullptr 被定义为无效指针。 !pointernullptr 指针转换为 true 并将非 nullptr 指针转换为 false . !booleantrue 转换为 false 并将 false 转换为 true。它总是有效的。

!(!a) 是一种有用的思考方式。

关于c++ - 定义双感叹号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11374810/

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