Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
243 views
in Technique[技术] by (71.8m points)

c++ - If always returns true

I'm just experimenting a bit with C++ but I can't figure out why both if-statements return true:

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    cout << "Language?" << endl;
    string lang;
    cin >> lang;
    if(lang == "Deutsch" || "deutsch")
    {
        cout << "Hallo Welt!";
    }
    else
    {
        return false;
    }
    if(lang == "English" || "english")
    {
        cout << "Hello World!";
    }
    else
    {
        return false;
    }
    return 0;
}

I'm pretty new to C++ and stackoverflow so I'm sorry if that's an stupid or frequently asked question but I really don't know any further. Please help!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

The expression lang == "Deutsch" || "deutsch" is actually equivalent to (lang == "Deutsch") || ("deutsch"). The second part of the expression is a const char* with a non-zero value, which means it will evaluate to true. The same applies to your second if statement.

You meant to write lang == "Deutsch" || lang == "deutsch".


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...