if / else - warum ist das nicht das selbe?

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
starcow
Establishment
Beiträge: 523
Registriert: 23.04.2003, 17:42
Echter Name: Mischa Schaub
Kontaktdaten:

if / else - warum ist das nicht das selbe?

Beitrag von starcow »

Ich stelle grad etwas schockiert fest, dass folgendes ganz offenstlich nicht das selbe ist:

Code: Alles auswählen

if(...) if(...) cout << "bla";
else cout << "blub";
und

Code: Alles auswählen

if(...) {if(...) cout << "bla";}
else cout << "blub";
Ich dachte eigentlich, dass wenn man die geschweiften Klammern bei einer if-Verzweigung weg lässt, dass dann bis zum nächsten Semikolon ausgeführt wird.
Nun scheint der Compiler aber das "else" zur zweiten if-Verzweigung zu zählen. Wieso?

Gruss starcow
Zuletzt geändert von starcow am 06.08.2020, 22:40, insgesamt 2-mal geändert.
Freelancer 3D- und 2D-Grafik
mischaschaub.com
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: if / else - warum ist das nicht das selbe?

Beitrag von Krishty »

Genau. Jeder, der schon mal einen Parser implementieren musste, kennt das Dangling Else :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
starcow
Establishment
Beiträge: 523
Registriert: 23.04.2003, 17:42
Echter Name: Mischa Schaub
Kontaktdaten:

Re: if / else - warum ist das nicht das selbe?

Beitrag von starcow »

Ok, danke euch! :-)
Freelancer 3D- und 2D-Grafik
mischaschaub.com
Antworten