为什么我在 C++ 中得到这个输出?解释逻辑

Why am I getting this output in C++? Explain the logic

#include <stdio.h>
#include <iostream>
int main() 
{
  if(NULL)
    std::cout<<"hello";
  else
    std::cout<<"world";
  return 0;
}

上述问题的输出是:

世界

请解释一下为什么我会得到这个输出。我参考了几个不同的来源也无法得到满意的答案。

NULL 导致错误条件。你可以想象 NULL 是一个 0,所以这个:

if(NULL)

相当于:

if(0)

因此您的代码将变为:

#include <stdio.h>
#include <iostream>
int main() 
{
  if(0)
    std::cout<<"hello";
  else
    std::cout<<"world";
  return 0;
}

这里很明显,因为0结果为false,所以if条件不满足,因此if语句的主体没有被执行。结果,执行了 else 语句的主体,这解释了您看到的输出。


PS: Correct way of defining NULL and NULL_POINTER?