Forum: Mikrocontroller und Digitale Elektronik Frage zu if - else Struktur


von Sven (Gast)


Lesenswert?

Mein Beispiel:
1
x=1;
2
if (x==1){
3
x=0;
4
}
5
else {
6
tue etwas anderes;
7
}

"etwas anderes" soll ja nur ausgeführt werden, wenn die if-Bedingung 
nicht zutrifft. was aber, wenn, wie hier, die Bedingungen sich innerhalb 
der if-Anweisung ändern? Wird "etwas anderes" dann doch innerhalb der 
aktuellen Schleife ausgeführt oder erst in der nächsten?

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Nein, die Entscheidung wird beim Auswerten des If-Statements getroffen, 
was dach passiert hat in dem Moment keine Bedeutung.

von c-hater (Gast)


Lesenswert?

Sven schrieb:

> Wird "etwas anderes" dann doch innerhalb der
> aktuellen Schleife ausgeführt oder erst in der nächsten?

Erst in der nächsten. Die Entscheidung fällt ja bei der Auswertung durch 
das if. Was danach passiert, hat keinen Einfluss mehr auf den Ablauf 
innerhalb der Kontrollstruktur. Erst beim nächsten Durchlauf, denn da 
wird ja erneut die Bedingung geprüft.

von micha (Gast)


Lesenswert?

Erst in der nächsten Iteration. Das ganzen kannst Du dir so vorstellen

X ::= 1
If (X==1) goto @then
Goto @else
@then
X::=0
Goto @weiter
@else
...
@weiter
....

von Sven (Gast)


Lesenswert?

alles klar, danke euch!

von A. S. (Gast)


Lesenswert?

Noch krasser ist es bei x++ vs. ++x.

von dave4 (Gast)


Lesenswert?

Ich will jetzt nicht klugscheißen... Aber...
Im Beispiel oben wird else niemals aufgeführt weil x vor dem Statement 
immer auf 1 gesetzt wird.

von and his name is john cena (Gast)


Lesenswert?

dave4 schrieb:
> weil x vor dem Statement
> immer auf 1 gesetzt wird.

Und wenn es volatile ist und nach dieser Zuweisung irgenwie "extern" auf 
einen Wert !=1 gesetzt wird?

von A. S. (Gast)


Lesenswert?

dave4 schrieb:
> Im Beispiel oben wird else niemals aufgeführt weil x vor dem Statement
> immer auf 1 gesetzt wird.

Dann hast Du entweder die Frage nicht gelesen oder nicht verstanden.

Es handelt sich hier ja um keine Funktion oder Programm, sondern um ein 
Fragment. Und für einen Anfänger (aus der Frage folgend) ist die Frage 
sehr präzise, ja vorbildlich gestellt.

von mIstA (Gast)


Lesenswert?

and his name is john cena schrieb:
> Und wenn es volatile ist und nach dieser Zuweisung irgenwie "extern" auf
> einen Wert !=1 gesetzt wird?

Dann ist jedenfalls das Zeitfenster in dem eine "externe" Beeinflussung 
möglich wäre minimal, weil die Anweisungen zum Speichern (nach der 
Zuweisung) und zum Laden (für den Vergleich) höchstwahrscheinlich direkt 
aufeinanderfolgen werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.