2013-07-18 42 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

相關問題