Sie den &&
Operator verwenden:
if(!strcmp(name, "MyName") && !strcmp(family_name, "MyFamilyName")) {
// do your stuff
}
C den logischen Operatoren (&&
und ||
) Kurzschlüsse unterstützen. Das heißt, sobald der Wert des Ausdrucks bekannt ist, wird der Rest nicht ausgewertet. Wenn zum Beispiel der erste strcmp
einen Wert ungleich Null ergibt (der erste Name stimmt nicht überein), wird der zweite Vergleich überhaupt nicht durchgeführt, da der Ausdruck an diesem Punkt nicht wahr sein kann. Dies kann verwendet werden, um zu überprüfen, für Dinge seiner NULL
, zum Beispiel: if(name != NULL && !strcmp(name, "blah")) ...
!
Der Operator logisch nicht, was wandelt jeden Nicht-Null-Wert in eine Null und jede Null in eine Eins. (Dies unterscheidet sich von Binär nicht ~
, die alle Bits einzeln kippt: !5 == 0
, aber ~5 == -6
). !strcmp(...)
ist daher eine Kurzschrift für strcmp(...) == 0
.
Jeder logische Ausdruck des Formulars kann als !(A || B)
umformuliert werden. Dies ist ein spezifisches Beispiel für De Morgan's Laws, das das Lesen von Code generell erleichtert. In Anbetracht dieser Tatsache Ihre if
Aussage kann als
if(!(strcmp(name, "MyName") || strcmp(family_name, "MyFamilyName"))) {
// do your stuff
}
, die die Art und Weise ist es @Boiethios schrieb neu geschrieben werden.
Größere Arrays, 'strcpy' und' strcat'? –
Hinweis: jedes nächste 'if' kann im vorherigen' if' durch '&&' ersetzt werden, wenn es keine 'else' Teile gibt. –
@PaulOgilvie. Und manchmal sogar dann, wenn du schlau genug bist. –