Можно ли в условии с указателями опустить nullptr

Есть условие:

if ((p != nullptr) && (p->left == nullptr) && (p->right == nullptr)){....

Можно ли его записать как:

if ((p) && (!p->left) && (!p->right){....

Или смысл условия все же поменяется?

P.S. p - это указатель на класс (Node*)


Ответы (1 шт):

Автор решения: Джонни Кэтсвилл

Оператор if требует, выражение типа bool. Если выражение имеет другой тип, то он будет преобразовано в bool.

Алгоритм преобразования указателя в bool прост. Нулевой указатель преобразуется в false, любой ненулевой указатель в true.

→ Ссылка