-5

何かの価値を評価するプログラムを作っています。追加する合計値を保持する変数がありますrcoverE。2番目の質問で「y」をテストすると機能しますが、「n」を入力すると、とにかく5が追加されます。なぜこうなった?

    #include <iostream>
    using namespace std;

    int main(){
        int year, yearE, rcoverE;
        string rcover, func;
        cout << "Enter the decade your thing was produced (eg. 20):";
        cin >> year;
        cout << "Does you typewriter have original thingy? (y,n):";
        cin >> rcover;

        rcoverE = 0;
        if(rcover == "y" || "Y"){
           rcoverE = rcoverE + 5;
        }else{
            rcoverE = rcoverE + 0;
        }
        cout << rcoverE;
        yearE = 100 - year / 2;

    }   
4

2 に答える 2

3
if(rcover == "y" || "Y"){

この条件は間違っています。次のようにする必要があります。

if(rcover == "y" || rcover == "Y"){

これは:if(rcover == "y" || "Y"){と論理的に同等でif(rcover == "y" || "Y" != 0)あり、"Y" !=0 は常に真です。

于 2013-07-18T15:58:30.457 に答える
0
if(rcover == "y" || "Y")

あなたが思うように評価しません。これは実際には if ("rcover == 'y') or if('Y')" として評価され、"rcover == ('y' || 'Y')" ではありません。一部の言語ではコンパイラがこれを許可しませんが、C++ ではステートメント "Y" を入力するだけで true が返されます。ステートメントを次のように変更する必要があります。

if(rcover == "y" || rcover == "Y")
于 2013-07-18T16:03:34.593 に答える