0

Хочу вывести слово если строка пустая. Вот так работает:

#include <iostream>

int main() { char q[]{'\0'};

    if(!q[0])
            std::cout &lt;&lt; &quot;hello&quot; &lt;&lt; std::endl;

    return 0;

}

А вот так нет:

#include <iostream>

int main() { char q[]{'\0'};

    if(!q)
            std::cout &lt;&lt; &quot;hello&quot; &lt;&lt; std::endl;

    return 0;

}

Почему?

Harry
  • 221,325
  • Оператор ! ожидает получить значение типа bool. 2) Массив может быть неявно преобразован в указатель на свой первый элемент. 3) Указатель может быть неявно преобразован в тип bool, причём если указатель указывает на объект, то он будет преобразован в true. 4) Итого, здесь !q массив q неявно преобразован в указатель, затем указатель неявно преобразован в true, затем оператор ! преобразует true в false. 5) Предвещая некоторые вопросы в будущем, оставлю ссылку на этот ответ. Возможно, вам будет интересен.
  • – wololo Mar 13 '21 at 10:00