2013-07-18 44 views
-5

我正在制定一个计划来评估一些东西的价值。我有一个变量可以保存要添加的总值,rcoverE。当我为第二个问题测试“y”时,它会起作用,但是当我输入“n”时,无论如何它都会增加5。这是为什么发生?为什么这个if语句不像我预期的那样行事?

#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; 

    } 
+5

呃,伙计,阅读一本C++书。 “问题必须证明对所解决问题的最小理解。” – 2013-07-18 15:58:49

+0

@ H2CO3已经成功了!关于这个话题的“最低限度理解”是什么? –

回答

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

不评价你认为它的方式。这实际上评估为if(“rcover =='y')或if('Y')”,而不是“rcover ==('y'||'Y')”。在某些语言中,编译器不会让你这样做,但在C++中,简单地将语句“Y”放回原样。您需要更改语句为:

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

这种情况是错了,它应该是:

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

此:if(rcover == "y" || "Y"){是逻辑上等同于if(rcover == "y" || "Y" != 0)"Y" != 0总是正确的。

+0

这个答案有什么问题@anonymous downvoter? – Borgleader

+0

我也想知道。投了票。 – 2013-07-18 16:01:52

+0

我想那是我。我回答了这个问题,然后在提交之前,@Borgleader的答案已经通过。我投了票,然后看到这个问题得到了投票,所以upvote似乎毫无意义。我点击向下箭头移除upvote(立即将其切换为downvote),然后我再次downvote删除它。哇,时间在SO上快速移动。 :-) Upvoted。 – moodboom

相关问题