La macro non esegue istruzioni, sostituisce semplicemente i simboli nel codice che solo dopo viene compilato per eseguire istruzioni. Tieni bene a mente questa cosa quando scrivi una macro perché altrimenti puoi generare risultati inaspettati.
prova questo:
// M(4) == 4 / 4;
// M(M(4)) == 4 / 4 / 4 / 4;
int s = (4 / 4 / 4 / 4);
printf("(4 / 4 / 4 / 4); %d\n", s);
float q = (4.0f / 4.0f / 4.0f / 4.0f);
printf("(4.0f / 4.0f / 4.0f / 4.0f); %f\n", q);