if条件下两个字符串比较的优化代码
Optimized code for two string compare in if condition
我想做两个字符串比较,并使用了两个不同的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(相等)时,它才会检查第二对字符串是否也相等。
如果您对这些字符串有所了解,那么显而易见的优化(尚未提及)是首先执行更可能失败的比较。
相关文章:
- 视觉C++使用 map 来比较字符串中的每个单词
- 我正在尝试从输入文件中读取,然后使用它们的子字符串比较字符串的特定部分
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- C++使用关系运算符比较字符串
- 通过默认复制构造函数比较 C++ 字符串是否会影响性能,原因为何?
- C++ TCP 服务器比较字符串失败
- 如何在不复制的情况下比较字符串的一部分?
- 比较 C++ 字符串打印中的两个整数数组
- 如何比较字符串形式的临时变量
- std::out_of_range 比较字符串中的符号时出错
- 比较字符串大小写不区分的简单方法是什么?
- 比较字符串忽略 NUL
- 比较字符串(arduino)时出现问题
- 如何在C++中比较字符串
- 比较字符串对象等于向量中的元素
- C 比较字符串操作速度
- 需要比较字符串的某些元素
- 比较字符串 .c_str() 和普通字符串的差异
- C 比较字符串的字符
- 通过使用两个不同的队列比较字符串