2つの文字列比較を行い、2つの異なるif条件を使用したい。文字列を行うに任意のより良い方法はあり、条件if条件での2つの文字列比較の最適化コード
if (strcmp(Buff1(), Config1) == 0)
{
if (strcmp(Buff2, Config2) == 0)
{
// my code goes here
}
}
2つの文字列比較を行い、2つの異なるif条件を使用したい。文字列を行うに任意のより良い方法はあり、条件if条件での2つの文字列比較の最適化コード
if (strcmp(Buff1(), Config1) == 0)
{
if (strcmp(Buff2, Config2) == 0)
{
// my code goes here
}
}
同等のコードがある場合は、1つで比較:
if ((strcmp(Buff1(), Config1) == 0)) &&
(strcmp(Buff2, Config2) == 0))
{
// my code goes here
}
注:コンパイラは、両方のコードサンプルのため、同じマシンコードを生成する必要があります。違いは美容的で、主にコードの読者を対象としています。比較すると
if (strcmp(Buff1(), Config1) == 0)
{
if (strcmp(Buff2, Config2) == 0)
{
// my code goes here
}
else
{
// else 1
}
}
else
{
// else 2
}
:あなたはelse
句を追加するとき
あなたは違いを得るかKLASの答えに加えて
if ((strcmp(Buff1(), Config1) == 0)) &&
(strcmp(Buff2, Config2) == 0))
{
// my code goes here
}
else
{
// Single else clause
}
(念のためにあなたは、AND演算子に慣れていません) - AND演算子( '& &')は最初の条件をチェックし、最初の条件が真である場合のみ2番目の条件を確認し続けます。 あなたの特定の質問では、文字列の最初の数が等しいかどうかをチェックし、真(等しい場合)のみ、2番目の数が等しいかどうかをチェックします。
明白な最適化(まだ言及されていません)は、それらの文字列について何か知っていれば、失敗する可能性の高い比較をまず実行することです。
はい。 '&&'演算子を使用してください。 – haccks
@haccks、違いはありません。アセンブラ命令は保存されません。 –
'Buff1'は関数で、' Buff2'は文字列ですか? @SouravGhosh; –