Por que esse C é válido? - ({123;}) avalia para 123 [duplicado]

Possível duplicado:
em que versões de c é usado um bloco entre parênteses para retornar um valor válido?

A seguir está uma versão com segurança de tipo de uma macro MAX típica (isso funciona no gcc 4.4.5):

#define max(a,b) \
({ __typeof__ (a) _a = (a); \
   __typeof__ (b) _b = (b); \
 _a > _b ? _a : _b; })

Aqui, vemos que essa expressão, max (a, b) retorna o resultado da expressão

_a > _b ? _a : _b;

mesmo que essa expressão esteja em um bloco. Então, eu investiguei e descobri que isso é C válido:

int a = ({123;}); // a is 123

Alguém pode explicar por que essa gramática é válida e qual é o verdadeiro comportamento de ({declarações})? Além disso, você notará que {123;} não é uma expressão válida, mas apenas ({123;}) é.

questionAnswers(1)

yourAnswerToTheQuestion