2015-04-22 82 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'