C中的#define问题

#include <stdio.h>

#define M(x) x - x

int main () {
    printf ("%d %d\n",M(M (1+2)) , M(M (3)));
    return 0;
}

Can someone explain to me step by step how the result to this is 6 -6?