Was ist das Verhalten des folgenden Codes?Was ist das Verhalten des folgenden Codes?
status.channel = 0;
void a(void)
{
status.channel++;
}
void handler(void)
{
if (status.channel == 0) {
// do a
a();
} else {
// do b
}
}
Zu Beginn status.channel = 0
ist die if
Anweisung gültig. dann in der Routine, status.channel
erhöht, es ist also gleich 1.
Meine Frage ist, wenn ich aus if
Anweisung bekommen, bewerte ich die else
: die status.channel
nicht mehr 0 ist Heißt das, dass der Code ausgeführt wird auch die else
Aussage?
Eine einfache Suche nach einem C-Buch hätte das beantwortet. Was hast du getan, um deine Frage selbst zu beantworten? Warum hat es nicht funktioniert? Stack-Überlauf ist keine Tutorial-Site. – Olaf
nehmen Sie ein Stück Papier und einen Bleistift. Schreiben Sie in Sätzen auf, was jede Codezeile eigentlich sagt (etwas in der Art von: _ "wenn status.channel gleich Null ist, rufen Sie die Funktion a auf, die status.channel inkrementiert (es wird dann 1 sein). Else (if if status.channel ist nicht Null), do b "_). Was ist da nicht zu verstehen? –
Die Verwendung von Nicht-Prototyp-Funktionsdeklaratoren ist veraltet. Wenn eine Funktion keine Parameter akzeptiert, verwenden Sie '(void)' anstelle von '()'. Wie Ihre andere Funktion bereits tut. Kopieren Sie nicht einfach Code aus verschiedenen Quellen, aber verstehen Sie den Code, bevor Sie ihn verwenden. Und verwenden Sie einen konsistenten Codierungsstil. – Olaf