if条件下两个字符串比较的优化代码



我想做两个字符串比较,并使用了两个不同的if条件。有没有更好的方法在一个if条件中进行字符串比较

if (strcmp(Buff1(), Config1) == 0)
{ 
    if (strcmp(Buff2, Config2) == 0)
    {
      // my code goes here
    }
}

等效代码为:

if ((strcmp(Buff1(), Config1) == 0)) &&
    (strcmp(Buff2, Config2) == 0))
{
    // my code goes here
}

注意:编译器应该为两个代码示例生成相同的机器代码。区别只是表面上的,主要针对代码的读者。

当你添加else子句时,你确实会得到不同:

if (strcmp(Buff1(), Config1) == 0)
{ 
    if (strcmp(Buff2, Config2) == 0)
    {
      // my code goes here
    }
    else 
    {
        // else 1
    }
}
else 
{
    // else 2
}

与相比

if ((strcmp(Buff1(), Config1) == 0)) &&
    (strcmp(Buff2, Config2) == 0))
{
    // my code goes here
}
else 
{
    // Single else clause
}

除了Klas的答案(以防您不熟悉AND运算符)之外,AND运算符('&&')还会检查第一个条件,并继续检查第二个条件-仅当-第一个条件为true时。所以在你的特定问题中,它检查第一对字符串是否相等,只有当true(相等)时,它才会检查第二对字符串是否也相等。

如果您对这些字符串有所了解,那么显而易见的优化(尚未提及)是首先执行更可能失败的比较。

最新更新