2015-04-22 122 views
-2

經過很長時間試圖讓我的else語句工作,它只是沒有。無論我輸入什麼,該程序都會返回第一個。請幫忙。我的其他如果語句使用字符串不工作

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

string arehap; 

int main() 
{ 
    cout << "Are you happy?" << endl; 
    cin >> arehap; 
    if (arehap == "Yes" || "Y") 
    { 
     cout << "Good." << endl; 
    } 
    else if (arehap == "No" || "N") 
    { 
     cout << "Bad." << endl; 
    } 
    return 0; 
} 

回答

4

你應該使用這樣的:

if (arehap == "Yes" || arehap == "Y") 
{ 
    cout << "Good." << endl; 
} 
else if (arehap == "No" || arehap == "N") 
{ 
    cout << "Bad." << endl; 
} 

當你使用||運營商,你要比較兩個布爾值。如果arehap等於"Y",則以下語句將爲Truearehap == "Y"。在這種情況下,您的計算機將「理解」爲if (True || False) { /* do smth */},這將評估爲True,並且您要執行的代碼將運行。

2

你的問題就出在這行:

if (arehap == "Yes" || "Y") 

C++明白這是

if ((arehap == "Yes") || ("Y")) 

並且在第一次檢查(arehap == "Yes")可能是假的,第二次檢查 - 這僅僅是"Yes"永遠是真的。

發生這種情況,因爲"Yes"被理解爲char const* - 並且此指針顯然不是NULL,而是指向字符'Y'