Wir obiges Problem in zwei unterschiedlichen Konzepten von C
- Arbeiten von if (Bedingung) Löschen können in C
- Difference of Character & Zeichenfolgenliteralen in C
1. Arbeiten von if (Bedingung) in C if (Bedingung)
In C-Sprache, wenn Bedingung auf 0 (Null) und Nicht-Null-Basis funktioniert.
Wenn das Ergebnis der gegebenen Bedingung Null ist, dann ist C der Ansicht, dass die angegebene Bedingung falsch ist.
Wenn das Ergebnis der gegebenen Bedingung Nicht-Null ist, dann ist C der Ansicht, dass die angegebene Bedingung wahr ist.
2. Difference of Character & Zeichenfolgenliteralen in C
In C Stringliterale sind solche, die in doppelten Anführungszeichen ("") eingeschlossen, während Zeichenliterale diejenigen sind, die in Einzel Zitat eingeschlossen Marken ('') und minimale Länge ist ein Zeichen und maximale Länge ist zwei Zeichen.Ein weiterer wichtiger Punkt ist, dass in C, wenn wir '\ 0' (null) in int (Integer) umwandeln, wir 0 (Zero) erhalten, während wir "\ 0" nicht implizit oder explizit in int umwandeln können . Weil "\ 0" eine Zeichenkette ist, während "\ 0" ein Zeichen ist.
Und nach Bedingung der Arbeitslogik der Zeichenkette IF, wenn die Bedingung 0 oder false zurückgibt, bedeutet dies, dass die Bedingung falsch ist; Wenn die Bedingung nicht Null zurückgibt, bedeutet dies, dass die Bedingung wahr ist.
So, nach Punkt 1 und 2 schließlich können wir schließen, dass
if ('\ 0') printf ("\ '\ 0 \' = false! \ N"); // Bedingung wird falsch
if ("\ 0") printf ("\" \ 0 \ "! = false \ n"); // Bedingung wird wahr
Die erste der ist * nul-Zeichen * ist die zweite * leeren string *. –
weil sie verschiedene Dinge sind, warum würden sie identisch bewerten? – njzk2
Und warum vergleichen Sie Strings/Zeichen mit booleans? –