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

时间:2016-04-19 07:51:56

标签: c++ c visual-c++

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

中进行字符串比较
if (strcmp(Buff1(), Config1) == 0)
{ 
    if (strcmp(Buff2, Config2) == 0)
    {
      // my code goes here
    }
}

3 个答案:

答案 0 :(得分:1)

等效代码为:

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
}

答案 1 :(得分:0)

除了Klas的回答(以防你不熟悉AND运算符) - AND运算符('&&')检查第一个条件并继续检查第二个条件 - 只有 - 第一个条件为真。 因此,在您的具体问题中,它会检查前几个字符串是否相等,并且仅当为真(相等)时,它会检查第二个字符串是否相等。

答案 2 :(得分:0)

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