Bitwise Operators - Programming

Q1:

What will be the output of the program?
#define P printf('%d\n', -1^~0);
#define M(P) int main()\
             {\
                P\
                return 0;\
             }
M(P)

A 1

B 0

C -1

D 2

ANS:A - 1

No answer description is available. Let's discuss.