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?