为什么这个if语句没有像我期望的那样表现?

时间:2013-07-18 15:56:41

标签: c++ string if-statement

我正在制作一个评估某物价值的程序。我有一个变量,它包含要添加的总值rcoverE。当我为第二个问题测试“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;

    }   

2 个答案:

答案 0 :(得分:3)

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

这种情况应该是错误的:

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

这:if(rcover == "y" || "Y"){在逻辑上等同于if(rcover == "y" || "Y" != 0),而"Y" != 0始终为真。

答案 1 :(得分:0)

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

不会评估您的想法。这实际上评估好像(“rcover =='y')或if('Y')”,而不是“rcover ==('y'||'Y')。”在某些语言中,编译器不允许您这样做,但在C ++中,只需将语句“Y”返回true即可。您需要将语句更改为:

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