Die {}-Operatoren sind in diesem Zusammenhang ein "anonymer Bereichsoperator" (auch bekannt als "lexikalische Einschließung", "Form" und verschiedene andere Dinge). Sie werden ähnlich wie ein Namensraum verwendet, um den Geltungsbereich von _a und _b auf die geschweiften Klammern zu beschränken, damit sie nicht mit anderen Variablen mit demselben Namen in Konflikt geraten. "auto"-Vars, die innerhalb der geschweiften Klammern definiert sind, werden "zerstört", wenn die schließende Klammer erreicht ist; oder bei einer nicht-lokalen Übergabe, wie einem "return" oder "longjmp". Sie können jedoch nicht zuverlässig "goto" verwenden, um sie aufzurufen.
Sie sind wahrscheinlich nur daran gewöhnt, sie nach "if"-, "do"-, "while"- und "for"-Operatoren zu sehen, aber betrachten Sie sie als eine Möglichkeit, mehrere Anweisungen in einem "Slot" zu bündeln, genauso wie Sie mehrere Anweisungen als "then"- oder "else"-Klausel eines "if" ausführen würden (wobei Sie, wenn Sie die geschweiften Klammern weglassen, nur einen Anweisungs-"Slot" haben)
Wie Mike Seymour feststellte, handelt es sich bei der ({})-Operation um eine nicht standardisierte GCC-Erweiterung, die den Wert des zuletzt ausgewerteten Elements zurückgibt. Sie ist dem allgemeinen Scoping-Operator sehr ähnlich, mit Ausnahme der inhärenten Rückgabe am Ende.