I am confused about how Unary Operators work in C for Ones Complement, Logical Negation and preincrementing.
Ones complement works against 0 like this:
int main()
{
int a;
a = ~0; // Ones complement
printf("%d",a); // prints as -1.
}
And logical negation works against 0 like this:
int main()
{
int a;
a = !0; // Logical negation
printf("%d",a); // prints as 1.
}
But Preincrement against 0 generates a compiler error:
int main()
{
int a;
a = ++0; //pre incrementing 0. error: non-lvalue in increment
printf("%d",a);
}
Why don't all three work considering they are all Unary Operators?