2016-04-19 13 views
0

2つの文字列比較を行い、2つの異なるif条件を使用したい。文字列を行うに任意のより良い方法はあり、条件if条件での2つの文字列比較の最適化コード

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

はい。 '&&'演算子を使用してください。 – haccks

+1

@haccks、違いはありません。アセンブラ命令は保存されません。 –

+0

'Buff1'は関数で、' Buff2'は文字列ですか? @SouravGhosh; –

答えて

1

同等のコードがある場合は、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 
} 
0

(念のためにあなたは、AND演算子に慣れていません) - AND演算子( '& &')は最初の条件をチェックし、最初の条件が真である場合のみ2番目の条件を確認し続けます。 あなたの特定の質問では、文字列の最初の数が等しいかどうかをチェックし、真(等しい場合)のみ、2番目の数が等しいかどうかをチェックします。

0

明白な最適化(まだ言及されていません)は、それらの文字列について何か知っていれば、失敗する可能性の高い比較をまず実行することです。

関連する問題