Wirkung von Semikolon nach 'for' - Schleife
Sagen, ich will eine Nachricht drucken in C fünf mal mit einem for
Schleife. Warum ist es, dass, wenn ich ein Semikolon hinter for-Schleife wie diese:
for (i=0;i<5;i++);
wird die Nachricht nicht ausgedruckt 5 mal, aber es funktioniert, wenn ich nicht das Semikolon da?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Semikolon ist ein legitimes statement genannt null-Anweisung * das bedeutet, dass "nichts tun". Da die
for
- Schleife führt eine einzige operation (die könnte ein block eingeschlossen in{}
) Semikolon behandelt wird, als der Körper der Schleife, was das Verhalten, das Sie beobachtet.Den folgenden code
ist wie folgt interpretiert:
for (i=0;i<5;i++)
{
}
Wie Sie sehen können, der Vorgang, der wiederholt wird, ist
;
, nicht dieprintf
.* Siehe K&R, Abschnitt 1.5.2
{}
ist der bevorzugte Weg, nichts zu tun.entspricht
Die Aussage aus den
;
token genannt null-Anweisung und es tut einfach... nichts.Dies ist beispielsweise gültig:
Kann es überall verwendet werden, eine Anweisung kann verwendet werden, zum Beispiel:
Finden Sie in der C Standard-Absatz:
Dieser code unten wird print "Hallo" 5 mal..
i < 5, printf("Hello\n");
- und der Komma-operator, wertet seinen LINKEN (i < 5
) und ignoriert das Ergebnis, dann wertet der RHS (printf("Hello\n")
), das gibt 6, weil es schreibt 6 Zeichen auf die Standardausgabe; denn 6 ist wahr (es ist nicht null), wird die Schleife fortgesetzt, auf unbestimmte Zeit. Mit meinem Standard-compiler-Optionen für den GCC (einschließlich-Werror
), wird der code nicht kompiliert:error: left-hand operand of comma expression has no effect [-Werror=unused-value]
.Viele Compiler zeigt einen syntax-Fehler, wenn Sie setzen Sie ein Semikolon nach einer for-Schleife, aber laut gcc-compiler(Linux) oder Dev-cpp können Sie setzen Sie ein Semikolon nach einer for-Schleife und es wird nicht zeigen Ihnen eventuelle Fehler.
Beispielsweise
oder
Aus dem obigen Beispiel ist es klar, wenn wir eine leere geschweifte Klammern oder Semikolon nach der for-Schleife, dass heißt, wir haben noch nicht eingegeben, jede variable noch.
Kommen jetzt zu Ihrer Frage.
Wenn Sie drucken möchten, Hallo fünf mal, Sie schreiben Ihr Programm als
Ich hoffe, Sie verstehen
prost!!
Rahul Vashisth