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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Sven (Gast)


Bewertung
0 lesenswert
nicht 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)


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

von c-hater (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
alles klar, danke euch!

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Noch krasser ist es bei x++ vs. ++x.

von dave4 (Gast)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (achs)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.