В некоторых языках присваивания являются утверждениями : они вызывают действие, но сами по себе не имеют значения. Например, в Python 1 запрещено писать
x = (y = 10) + 5
потому что присвоение y = 10
не может использоваться там, где ожидается значение.
Однако C - один из многих языков, где присваивания являются выражениями : они производят значение, а также любые другие эффекты, которые они могут иметь. Их значение - это значение, которое присваивается. Приведенная выше строка кода будет допустимой в C.
Использование двух знаков равенства в одной строке интерпретируется следующим образом:
ArcChar = (ArcBit = 0);
То есть: ArcChar
beging присваивается значение ArcBit = 0
, которое равно 0
, поэтому обе переменные в итоге получат 0
.
1 x = y = 0
на самом деле допустимо в Python, но считается специальным случаем оператора присваивания, и попытка сделать что-либо более сложное с присваиваниями завершится неудачей.