вот мой код Я хочу, чтобы оператор if работал, если пользователь вводит Да или Да. Когда я вынимаю || и «да» Моя программа работает нормально, и когда пользователь вводит «Да», это работает. Я хотел сделать свою программу лучше, а также иметь ее так, чтобы, когда они набирали «да», работали. Может кто-нибудь помочь мне понять это? Спасибо!
{
cout<<"Would you like to begin?\n";cin>>answer;
if (answer=="Yes" || "yes") {
continue_1=true;
google=false;
}
else {
if (answer=="No" || "no" ) {
cout <<endl<< "have a nice day\n";
google= false;
return 0;
}
Вы выполняете или в строках, а не в запросе — вы хотите:
if (answer=="No" || answer=="no" ) {
Чтобы быть более общим об этом, вы можете преобразовать строку в нижний регистр, а затем сравнить ее с «нет», который будет обрабатывать «Нет», «НЕТ» и «нет» для вас.
Довольно распространенный альтернативный подход — просто проверить, что первый символ в строке — это N или n. Это также поднимает такие вещи, как Нет и т. Д.
if (answer=="Yes" || answer == "yes")
Вам нужно использовать ==
в обеих проверках. К сожалению это не работает иначе
С чего начать?
Приоритет — см. http://en.cppreference.com/w/cpp/language/operator_precedence
Сравнение строк = см. http://www.cplusplus.com/reference/cstring/strcmp/
И узнать об указателях
Правильный синтаксис:
if (answer=="Yes" || answer=="yes")
Он не несет ничего с первой стороны, OR и AND могут использоваться для смешивания различных значений. как это:
if (answer=="Yes" || otherAnswer=="no")
Я бы предпочел сделать это с меньшим количеством ветвлений:
cout<<"Would you like to begin?\n";
cin>>answer;
if (answer== "No" || answer== "no")
return 0;
if (answer!= "Yes" && answer!= "yes" )
return error; // only answer with yes or no
// here, we know that the answer is yes