It's evaluated that way because of the mathematical order of operations.
//with this macro
#define SQUARED(x) (x*x)
int i = SQUARED(3 + 2)
//literally becomes this
int i = [B]( 3 + 2 * 3 + 2)[/B];
//order of operations says multiplication occurs before addition
int i = ( 3 + [B]6[/B] + 2);
//remaining addition occurs from left to right
int i = ( [B]9[/B] + 2);
int i = ( [B]11[/B] );
You MUST watch your parentheses when defining macros.