#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 приводит к ложному, условие if не выполняется, поэтому тело оператора if не выполняется. В результате выполняется тело оператора else, которое объясняет вывод, который вы видите.
Других решений пока нет …