2016-04-18 11 views
-10

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?

+1

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

+0

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? –

+0

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

Antwort

4

In einem if else Szenario, wenn die ifTrue ist und es ausgeführt wird, wird die entsprechende else nicht ausgeführt.

Auch wenn die Anweisungen innerhalb der if Block den Zustand ändert.

0

Die Else-Anweisung wird in diesem Fall nicht ausgeführt.

1

Die if, if...else und nested if...else Anweisung verwendet Einmal Entscheidungen in C-Programmierung zu machen, das heißt, einige Codes/s ausführen und einige Codes/s je nach dem Testausdruck ignorieren. Wenn der Ausdruck in Klammern der if-Anweisung true ergibt, wird der else-Block nicht ausgeführt. Wenn jedoch der Ausdruck in Klammern der if-Anweisung zu false auswertet, werden Blöcke von Anweisungen von else Teil ausgeführt und if Block wird übersprungen.

Sie können einige Experimente mit printf Funktion ausführen, um eine Idee über conditional statements in c-Programmierung zu bekommen.

Verwandte Themen