単項演算子が1の補数、論理否定、および事前インクリメントのためにCでどのように機能するかについて混乱しています。
1の補数は、次のように0に対して機能します。
int main()
{
int a;
a = ~0; // Ones complement
printf("%d",a); // prints as -1.
}
そして、論理否定は次のように0に対して機能します。
int main()
{
int a;
a = !0; // Logical negation
printf("%d",a); // prints as 1.
}
ただし、0に対するプリインクリメントは、コンパイラエラーを生成します。
int main()
{
int a;
a = ++0; //pre incrementing 0. error: non-lvalue in increment
printf("%d",a);
}
3つすべてが単項演算子であると考えて、3つすべてが機能しないのはなぜですか?