c++ 中 p == NULL 和 !p 的区别

bil*_*eng 0 c++

我最近在做Leetcode https://oj.leetcode.com/。假设p是一个指针,有趣的是我使用的时候运行时间是不一样的

if(p==NULL)
Run Code Online (Sandbox Code Playgroud)

if(!p)
Run Code Online (Sandbox Code Playgroud)

第一个比第二个花费更少的时间。它们之间有什么区别吗?谢谢!


更新: 根 == NULL,14 毫秒 !root, 15ms root == nullptr, 12ms

Jon*_*ood 5

我希望所有实现都能为两个版本生成完全相同的编译代码。

NULL值为零。并且!p正在测试 p 是否为零。所以在这两种情况下,p 都与零进行比较。

我严重怀疑您是否发现两者之间存在任何性能差异。而且,如果你是,我怀疑还有其他一些因素在起作用。