Parenthesis affecting output value

Why does Serial.print() have different values depending on how many parenthesis I use? For example:

uint8_t test = 1;

Serial.print(test, DEC); //prints out 1, as it should
Serial.print((test, DEC)); //prints out 10 for some reason

it's not just limited to DEC:

Serial.print(test, HEX); //prints 1
Serial.print((test, HEX)); //prints 16

Serial.print(test, BIN); //prints 1
Serial.print((test, BIN)); //prints 2

Thanks for your help!

Serial.print((test, DEC)); / Google "C++ comma operator"

The extra parens make the innermost terms an expression to be evaluated. Then serial.print prints the result. The comma operator evaluates as the rightmost term, 10 for DEC 16 for HEX.

Initially surprising, but actually makes sense once it sinks in.