Хочу вывести слово если строка пустая. Вот так работает:
#include <iostream>
int main()
{
char q[]{'\0'};
if(!q[0])
std::cout << "hello" << std::endl;
return 0;
}
А вот так нет:
#include <iostream>
int main()
{
char q[]{'\0'};
if(!q)
std::cout << "hello" << std::endl;
return 0;
}
Почему?
!ожидает получить значение типаbool. 2) Массив может быть неявно преобразован в указатель на свой первый элемент. 3) Указатель может быть неявно преобразован в типbool, причём если указатель указывает на объект, то он будет преобразован вtrue. 4) Итого, здесь!qмассивqнеявно преобразован в указатель, затем указатель неявно преобразован вtrue, затем оператор!преобразуетtrueвfalse. 5) Предвещая некоторые вопросы в будущем, оставлю ссылку на этот ответ. Возможно, вам будет интересен.