我很困惑如何在做布尔时做OR。 “||”由于某种原因,这对我不起作用

时间:2013-12-23 14:07:40

标签: c++ cmath

这是我的代码。如果用户键入Yes或yes,我希望我的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;

        }

5 个答案:

答案 0 :(得分:4)

您正在执行或在字符串上,而不是在查询上 - 您想要:

    if (answer=="No" || answer=="no" ) {

虽然你可以将字符串转换为小写然后将其与“no”进行比较,然后将其处理为“No”,“NO”和“no”,以便更加通用。

相当常见的替代方法是检查字符串中的第一个字符是N还是n。这也可以选择Nope等等。

答案 1 :(得分:2)

if (answer=="Yes" ||  answer == "yes")

您需要在两项检查中使用==。不幸的是,它不起作用

答案 2 :(得分:1)

一个人从哪里开始?

优先顺序 - 请参阅http://en.cppreference.com/w/cpp/language/operator_precedence 字符串比较=见http://www.cplusplus.com/reference/cstring/strcmp/

了解指针

答案 3 :(得分:0)

正确的语法是:

if (answer=="Yes" || answer=="yes")

它不携带任何东西,OR和AND可以用来混合不同的值。像这样:

if (answer=="Yes" || otherAnswer=="no")

答案 4 :(得分:0)

我宁愿用更少的分支来做到这一点:

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