Переменная answer1
объявлена как массив символов
char answer1[50];
В условии этого оператора if
if (answer1 == 'Yes' && answer1 == 'yes') {
указатель массива неявно преобразуется в указатель на его первый элемент (символ), имеющий тип char *
.
С другой стороны, например, этот литерал 'Yes'
является многобайтовым символьным литералом, который имеет тип int
.
Таким образом, вы пытаетесь сравнить адрес первого символа массива с целым числом, имеющим значение, определенное реализацией. Очевидно, что это не имеет смысла.
Вам нужно использовать стандартную C функцию strcmp
, которая объявлена в заголовке <cstring>
. И вместо символьных литералов используйте строковые литералы.
Также вы должны использовать логический оператор ИЛИ ||
вместо логического оператора И &&
внутри условия.
Например
#include <cstring>
//…
if ( strcmp( answer1, "Yes" ) == 0 || strcmp( answer1, "yes" ) == 0 ) {
Программа будет более безопасной, если вместо символьных массивов вы будете использовать стандартный класс std::string
.