2016-04-19 7 views
0

Ich möchte zwei Zeichenfolgen vergleichen und zwei verschiedene If-Bedingung verwendet. Gibt es eine bessere Art und Weise Zeichenfolge zu tun zu vergleichen, in einem, wenn die BedingungOptimierter Code für zwei Zeichenfolgen vergleichen in If-Bedingung

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

Ja. Verwenden Sie '&&' operator. – haccks

+1

@hacks, macht keinen Unterschied. Es wird keine Assembler-Anweisung gespeichert. –

+0

'Buff1' ist eine Funktion und' Buff2' ist eine Zeichenkette? –

Antwort

1

Der entsprechende Code ist:

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

Hinweis: Der Compiler den gleichen Maschinencode für beide Codebeispiele erzeugen sollte. Der Unterschied ist kosmetisch und richtet sich primär an den Leser des Codes.

Sie tun einen Unterschied, wenn Sie else Klauseln hinzu:

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

Im Vergleich zu:

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

Neben Klas Antwort (nur für den Fall sind Sie nicht vertraut mit dem AND-Operator) - Der Operator AND ('& &') prüft die erste Bedingung und überprüft weiterhin die zweite Bedingung - nur wenn - die erste Bedingung zutrifft. Also in Ihrer spezifischen Frage, es überprüft, ob die ersten paar Strings gleich sind und nur wenn wahr (sind gleich), es überprüft, ob das zweite Paar auch gleich sind.

0

Die offensichtliche Optimierung (noch nicht erwähnt), wenn Sie etwas über diese Zeichenfolgen wissen, besteht darin, zuerst den Vergleich durchzuführen, der eher fehlschlägt.

Verwandte Themen