Beispiel:
int a = ({ int b=10; b+10; });evaluiert zu a = 20
Innerhalb eines Anweisungsblockes können lokale Labels deklariert werden, indem am Anfang des Blockes das Label mit __label__ labelname deklariert wird.
Beispiel:
{ __label__ sprung; ... sprung: ... goto sprung; }
Mit dem Operator && kann die Adresse eines Labels bestimmt werden, welche vom Typ void* ist und konstant ist. Mit goto *exp kann zu einer selbst berechneten bzw. durch den Operator && bestimmte Adresse gesprungen werden, wobei exp vom Typ void* sein muß.
Beispiel:
void *ptr = &&sprung; goto *ptr; ... sprung: ...
Die geschachtelten Funktionen können auf alle Variablen der äußeren Funktion zugreifen und von außerhalb der Hauptfunktion aufgerufen werden, jedoch sollte das nur solange geschehen, solange die äußere Funktion noch nicht beedet wurde.
Beispiel:
foo (int a, int b) { int square(int x) { return x * x; } return square(a) * square(b); }
Mittels typedef name = expr bekommt name den Typ von expr.
Beispiel:
typedef an_int = 12*34-2; // selber Typ wie unten typdef int another_int; // selber Typ wie oben an_int i = 34; another_int j = 34;