I'm looking your expertise to help me understand why the output is not as expected.

Code:
#include <stdio.h>

#define SQUARE(x) (x)*(x)


int main()
{
    printf("%d ", SQUARE(4));    //  16
    int x = 3;                   // x = 3 
    printf("%d ", SQUARE(++x));  // Expecting 16 but getting 25 
   


    return 0;
}


Why program give value 25 instead of 16