c ++中p == NULL和!p之间的差异

时间:2015-02-05 03:54:59

标签: c++

我最近正在做 Leetcode https://oj.leetcode.com/。假设p是指针,有趣的是当我使用

时运行时间不同
if(p==NULL)

if(!p)

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


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

2 个答案:

答案 0 :(得分:4)

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

NULL的值为零。并且!p正在测试p是否为零。所以在这两种情况下,p都被比作零。

我严重怀疑你是否发现两者之间存在性能差异。并且,如果你是,我怀疑其他一些元素在那里发挥作用。

答案 1 :(得分:1)

启用优化程序。调试版本中的C ++性能没有意义。

相关问题