This is the comma operator: evaluation of a, b first causes a to be evaluated, then b, and the result is that of b.
int a = (1, 2, 3); first evaluates 1, then 2, finally 3, and uses that last 3 to initialise a. It is useless here, but it can be useful when the left operand of , has side effects (usually: when it's a function call).