geschweifte Klammern...



  • Erstmal hallo an alle

    Ich habe folgende frage, was bedeutet es eigentlich wenn in einer funktion geschweifte klammern benutze ohne alles???

    int main()
    {
        ....
    
        {
            int i = 5;
        }
    
        ....
    }
    


  • ibi550 schrieb:

    Erstmal hallo an alle

    Ich habe folgende frage, was bedeutet es eigentlich wenn in einer funktion geschweifte klammern benutze ohne alles???

    int main()
    {
        ....
    
        {
            int i = 5;
        }
    
        ....
    }
    

    variablen die du in diesem kontext deklarierst sind außerhalb der geschweiften
    klammern nicht gültig. desweiteren werden sie beim verlassen des blocks zerstört,
    ähnlich wie lokale variablen in einer funktion.



  • Das erzeugt einen Block. Alle innerhalb eines Blocks erzeugten lokalen Variablen, wie i in deinem Beispiel, verlieren ihre Gültigkeit außerhalb des Blocks. Werden dann also gelöscht. Solch einen Block kannst du auch mit break verlassen.



  • Das ist ein eigenständiger Anweisungstyp namens Verbundanweisung oder "Compund Statement" - alles innerhalb der Klammern wird zu einer einzelnen Anweisung zusammengefasst.

    Praktisch benötigt man sowas vor allem im Zusammenhang mit Kontrollstrukturen - if(), for(), while() und Kollegen erlauben in ihrem Rumpf genau eine Anweisung, wenn man da mehr zu tun hat, verwendet man halt eine Verbundanweisung. Ein weiterer netter Effekt ist, daß du hiermit einen eigenen Gültigkeitsbereich erzeugst (Variablen, die du innerhalb der Klammern anlegst, sind nur innerhalb gültig).



  • Ahh, danke.

    Jetzt wirds wieder ein bißchen heller 😃



  • Fellhuhn schrieb:

    Solch einen Block kannst du auch mit break verlassen.

    Nicht ganz - mit break; kannst du nur den Rumpf einer Schleife oder switch()-Anweisung verlassen, keine freistehende Verbundanweisung.



  • Hm, komisch. War das bei Java oder Ada? *seufz*


Log in to reply