Sorry I can't name those things properly, if I could, I might not have to ask. The latter part is probably also a statement because of the semicolon, but it's just a "a + b" which doesn't do anything?
I recently saw this thread and its accepted answer: MIN and MAX in C
Using this macro:
#define max(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })
I examined it to understand how it works, i.e. how that produces something which, upon macro expansion, can be assigned to something else. So here a simpler example which compiles and does what it seems to:
int x = ({ int a=5; int b=3; a + b; });
printf( "%i", x );
// output: 8
Why / how does this work exactly, and why are both brace pairs ({ }) necessary for it to compile/work?