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?