2014-02-09 3 views
0

У меня возникла проблема с выражением if в C++, этот оператор находится в цикле do-while.если условие на турбо C++

gotoxy(27,22);cout<<"Do you want to continue [Y]?"; 
    sub=getche(); 
    if(sub!='y' || sub!='Y') 
    { 

     gotoxy(27,24);cout<<"INVALID ANSWER!!"; 
     gotoxy(27,26);cout<<"Closing Program...."; 
     delay(3000); 
     exit(1); 
    }else 
    { 
     sub=ans; 
    } 
}while(tolower(ans)=='y'); 

всякий раз, когда я ввода у от переменной суб код на если заявление по-прежнему выполняется .. пожалуйста, кто-то говорит мне, где ошибка .. Спасибо!

+1

Сделать таблицу истинности. – chris

+1

Не смешивайте iostreams и stdio. Если вы используете cout для вывода, вы должны использовать cin для ввода. Если вы хотите использовать getche для ввода, используйте printf для вывода. – Jherico

+0

Я не включил stdio. – user2959418

ответ

2

Булево выражение (sub!='y' || sub!='Y') всегда будет оценивать истинной

Эта строка:

if(sub!='y' || sub!='Y') 

должно быть так:

if ((sub != 'y') && (sub != 'Y')) 
+1

Обратите внимание, что в дополнительных скобках может быть уточнен код, здесь они не нужны, и я думаю, что обычно это не будет использоваться в простом состоянии. – hyde

+0

@hyde - Руководства по кодированию, которые у меня есть для моей собственной команды, - это предпочесть дополнительные круглые скобки вокруг отдельных булевых выражений. Это дает понять, что оценивается, и избегает двусмысленности в отношении порядка приоритетов операторов. И мне нравится быть последовательным в отношении того, как я применяю этот стиль (т. Е. Всегда). Я знаю, что некоторые не согласятся ... – selbie

+0

Я изменил его на &&, но он просто выходил из программы после ввода y. и раньше я также пытался изменить его на if (tolower (sub)! = 'y'), который он все еще выполняет, если код оператора .. :( – user2959418

0

Ваш код if(sub!='y' || sub!='Y') будет правдой, независимо от того, что вы входите, потому что либо sub!='y', либо sub!='Y' оценит значение true. Следовательно, используйте && вместо ||.

+0

Я попытался изменить его на &&, но он не пройдет через мое заявление else, оно выйдет из программы. :( – user2959418

+0

Попробуйте добавить инструкцию cout в другую часть и проверить, отображается ли какой-либо вывод или нет. –

Смежные вопросы