gpt4 book ai didi

C++ if else 语句一直执行 if 而不是 else 下的代码

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:00 25 4
gpt4 key购买 nike

我有一个 if else 语句,但它似乎正在执行 if 下的代码,它应该执行 else 下的代码,但我看不出为什么我的代码在下面。

如果您查看最后一个 if 语句,如果您注意到 0 - 3 D、W、O、P 不在单元格 0 - 3 中,它会检查是否显示了这些字符,但它仍然会在那里执行打印语句谁能告诉我为什么?

很乐意提供任何帮助

        order.push_back("V"); //V
order.push_back("I");//F
order.push_back("F");//I
order.push_back("N");//O
order.push_back("D");//O
order.push_back("W");//O
order.push_back("O");//O
order.push_back("P");//O
order.push_back("Y");//O
order.push_back("C");//O
order.push_back("L");//O
order.push_back("E");//O
order.push_back("R");//O
order.push_back("X");//O

if(order.front() == "V")
{
it = find(order.begin(), order.end(), "I");
++it;
std::string o = *it;
DCS_LOG_DEBUG("NEXT 0 " << o);
DCS_LOG_DEBUG("NEXT " << *it);


int i = find(order.begin(), order.end(), "N") - order.begin();
int pos = i;

DCS_LOG_DEBUG("POS " << pos);

for(int i1 = 0; i1 < pos; i1++)
{
DCS_LOG_DEBUG("IN LINE " << order[i1]);

if(order[i1] == "D" || "W" || "O" || "P")
{
DCS_LOG_DEBUG("It matches one of the above incorrect");
}
else
{
for(pos; pos < order.size(); pos++)
{

DCS_LOG_DEBUG("FOUND AFTER POS INDEX " << order[pos]);
}
}

最佳答案

if(order[i1] == "D" || "W" || "O" || "P")

检查 order[i1] == "D" 是否为真。如果这不是真的,它会检查 "W" 是否为真。这始终为真,因此编译器可能会计算出此测试的计算结果始终为真。

你真正的意思是

if(order[i1] == "D" || order[i1] == "W" || order[i1] == "O" || order[i1] == "P")

关于C++ if else 语句一直执行 if 而不是 else 下的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com