无法将嵌套if转换为if(condition1 || condition2)

时间:2012-10-25 01:41:12

标签: c if-statement strcmp

我有以下正常运行的代码。

if((strcmppgm2ram((char*)name, (ROM char*)"products.htm") != 0))
{
    if((strcmppgm2ram((char*)name, (ROM char*)"restock.htm") != 0))
    {
        return HTTP_IO_DONE;
    }
}

我想清理它并将其放入表格中:

if((strcmppgm2ram((char*)name, (ROM char*)"products.htm") != 0) || (strcmppgm2ram((char*)name, (ROM char*)"restock.htm") !=0))
{   
        return HTTP_IO_DONE;    
}

不幸的是,后者无法正常工作。有什么我忽略了?提前致谢! 附:为了这个问题,strcmp == strcmppgm2ram。

2 个答案:

答案 0 :(得分:6)

当您使用||时,您正在使用&&

只有在BOTH条件为真时才能达到结果。

之前不起作用的原因是因为即使其中一个字符串匹配,另一个字符串也不匹配,因此无论输入如何,该语句总是会返回HTTP_IO_DONE

答案 1 :(得分:4)

请注意,如果两个条件都变为true,则只有return HTTP_IO_DONE;,因此您应该使用(&&)而不是