Q:

how to explain this expression "int a=({10;});" in C language?

During my C language practice, I face an expression and then I get it simplified as follows:
int a=({10;});

It is a legal expression since it gets past the gcc compiler. 
Please focus on this part: ({10;}). Is anybody able to explain it? The more detailed, the better. Thanks!

A:

This is a statement expression. It is a gcc extension and according to the documentation 6.1 Statements and Declarations in Expressions:

The last thing in the compound statement should be an expression followed by a semicolon; the value of this subexpression serves as the value of the entire construct.

so for this piece of code:
int a=({10;});

according to these rules the value will be 10 which will be assigned to a.
This extension is one many gcc extensions used in the Linux kernel, although the linked article does not actually cover statement expressions, this kernel newbies FAQ entry explains some of the reasoning behind using statement expressions in the Linux kernel.
As the gcc document notes compiling with the -pedantic option will warn you when you are using a gcc extension.

