?=?: function with parameters pointer to signed int signed int returning signed int ?!=?: function with parameters signed int signed int returning signed int 0: signed int f: function accepting unspecified arguments returning void with body CompoundStmt Declaration of a: signed int Declaration of struct __anonymous0 with members b: signed int Declaration of a: instance of struct __anonymous0 If on condition: Cast of: Applying untyped: Name: ?!=? ...to: Name: a Name: 0 to: signed int .... and branches: CompoundStmt While on condition: Cast of: Applying untyped: Name: ?!=? ...to: Name: a Name: 0 to: signed int .... with body: CompoundStmt Declaration of b: pointer to signed int Labels: {} For Statement initialization: Expression Statement: Name: b condition: Cast of: Applying untyped: Name: ?!=? ...to: Name: a Name: 0 to: signed int increment: Name: b statement block: CompoundStmt