Macro C con expresión resultado no deseado

Estoy ejecutando el siguiente programa y obtengo un resultado como 9 7, entendí por qué 9 es la salida, pero no puedo entender por qué obtengo 7 como salida.

#include<stdio.h>
#define sqr(i) (i*i)

int main()
{
    printf("%d %d", sqr(3), sqr(3+1));
    return 0;
}

Para la segunda función que essqrt(3+1) ¿Cómo se expande el micro y cómo obtengo 7 salidas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta