Why not use: x = !x;?

No
the promotion rule from int to bool says that any non null integer value is becoming true.