2

&&この状況でブール値が機能するのはなぜですか? 「黄色」と入力すると、最初の条件「赤」が偽であるため、「短絡」して2番目の条件をチェックしないでください。

#include <iostream>
#include <string>    
using namespace std;

int main()
{
    string color;
    do
    {
        cout << "Pick one of the colors: red, yellow, or blue\n";
        cin >> color;
    }while ((color != "red") && ( color != "yellow") && ( color != "blue"));

    {
        cout << "I like that color too";
        return 0;
    }
}

  

4

4 に答える 4

1

colorがの場合"yellow"(color != "red")は true です。そのため、次の条件 をチェックしますが(color != "yellow")、これは false です。したがって、条件は false です。3 番目のテスト(color != "blue")は実行されません。これは、式が既に false と評価されたため、その評価が短絡したためです。

(color != "red")            // color == "yellow", so this is true
&& (color != "yellow")      // color == "yellow", so this is false
&& (color != "blue")
于 2013-06-23T06:48:53.867 に答える
0

&&イベントの場合、最初の単一の条件が結果に評価された場合、false条件全体が評価されfalseます。

この解決策を試してください

while ((color != "red") || ( color != "yellow") ||( color != "blue"));
于 2013-06-23T06:52:43.733 に答える