Issues with Macros in C : I'm still trying to firgure out macros in C

    #define A(x) #x
    
    int main()
    {
    int i = -i;
    char *s = A(i);
    
    i = -(s[0] == 'i');
    
    printf("%d", i);
    
    return 0;
    
    }

Anyone care to enlighten me and comment the code, especially what the macro does and this line: i = -(s[0] == 'i');