c++ - "if"条件始终计算为 "true"

标签 c++ if-statement

<分区>

我正在使用字符串运行一系列 if/else if/else 语句,无论用户输入 if 总是返回 true:

cout << "Enter the element to look up: ";
cin >> elementLookup;
cout << endl << endl;

if (elementLookup == "H" || "Hydrogen" || "hydrogen") {
    cout << "Atomic Number: " << H_NUMBER << endl << endl;
    cout << "Atomic Mass: " << H_MASS << endl << endl;
}
else if (elementLookup == "He" || "Helium" || "helium") {
    cout << "Atomic Number: " << HE_NUMBER << endl << endl;
    cout << "Atomic Mass: " << HE_MASS << endl << endl;
}
else if (elementLookup == "Li" || "Lithium" || "lithium") {
    cout << "Atomic Number: " << LI_NUMBER << endl << endl;
    cout << "Atomic Mass: " << LI_MASS << endl << endl;
}

所有变量都已在代码的前面声明。出于某种原因,每次我运行这段代码时,无论用户输入如何,它都会说第一个 if 语句为真。我做错了什么”

最佳答案

if (elementLookup == "H" || "Hydrogen" || "hydrogen")

这是三个测试,或运算在一起。

第一个测试,elementLookup == "H",测试字符串 elementLookup 是否与 "H" 相等。

另外两个测试测试字符串文字 ("Hydrogen"/"hydrogen") 是否为非空。

这总是正确的。

想要的是:

if (elementLookup == "H" || elementLookup == "Hydrogen" || elementLookup == "hydrogen")

关于c++ - "if"条件始终计算为 "true",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46232661/

相关文章:

c++ - 混合使用 C++ 和程序集无法将多个参数从 C++ 函数传递给程序集

c++ - c++中字符串的这两种不同的初始化有什么区别?

c++ - C/C++ Plugin API设计困境

php - 如何在特定时间段内在 php 中显示任何内容?

c++如何检查ostringstream是否为空

c++ - 为什么 std::bind 不能与 std::filesystem::path 和 std::ostream 一起工作?

java - 如何在解析复杂 XML 时尽量减少 XMLStreamReader 中 if else if 的使用

r - 如何从循环和 if 语句创建二进制变量

带有IF条件的MYSQL求和查询

powershell - Powershell:如何确定 “if”语句中的哪个变量触发了True?