Macro C com resultado indesejado de expressão

Estou executando o programa a seguir e obtendo um resultado como 9 7, entendi por que 9 é a saída, mas não consigo entender por que estou recebendo 7 como saída.

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

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

Para a segunda função que ésqrt(3+1) como o micro está sendo expandido e como estou recebendo 7 impressões?

questionAnswers(1)

yourAnswerToTheQuestion