~
- это унитарное побитовое дополнение , которое переворачивает биты в целое число.
Однако, прочитав комментарий и поняв, что я прочитал ваш код неправильно, я понял, что кодто, что вы представили, даже не скомпилируется в современном компиляторе.
Благодаря @Avi: оператор =&
означает то, что &=
означает сегодня, но этот синтаксис действительно предшествует текущемуСтандарты С, так что это действительно древний код UNIX.
Что на самом деле означало бы сегодня
Здесь &
должен действовать как оператор address-of
, а неоператор bitwise AND
.
int main()
{
int x = 5;
int y = 2;
x =& ~y;
}
Компиляция этого кода приведет к:
error: lvalue required as unary ‘&’ operand
Я действительно думаю, что была проблема в транскрипции, так как по логикедолжно быть &=
, а не наоборот.
В случае, если это на самом деле &=
, то это происходит поразрядно и.