[C++]两个连续感叹号(双感叹号)的意义
keywords: [C++]两个连续感叹号(双感叹号)的意义
网上看到有些代码在判断指针是否为空时,写两个感叹号:
void Test(A* Ptr)
{
bool b = !!Ptr;
...
}
可能原因有两个:
- 从JavaScript、TypeScript转C++的程序员,在用JS的语法写C++代码,JS必须这样,但是C++中非必要;
- GCC提供了某些编译器参数(比如
__builtin_expect
),这些语法要求:对于指针类型的参数,转换为bool类型时,必须添加两个感叹号;
Defining double exclamation?
https://stackoverflow.com/questions/11374810/defining-double-exclamation
__builtin_expect 说明
https://www.jianshu.com/p/2684613a300f
时间是一只藏在黑暗中的温柔的手,在你一出神一恍惚之间,物走星移。----龙应台《目送》