Начнём с примера. Вместо использования операции присваивания вместе с операцией сложения, когда первый операнд операции сложения совпадает с первым операндом операции присваивания:
x = x + 2;
можно использовать сокращенную операцию присваивания со сложением:
x += 2;
Для каждой бинарной арифметической операции в языке Си существует соответствующая сокращённая операция присваивания.
Т.е., существуют такие операции как:
- +=
- -=
- *=
- /=
- %=
- Achtung!!!
Правильно:
a -= b;
Правильно (но записано не очень красиво):
a-=b;
Неправильно:
a - = b;
Правильно, но означает вовсе не сокращённое присваивание с вычитанием:
a =- b;
Правильно (смысл полностью совпадает со смыслом предыдущего примера):
a = -b;
Так же, как и в случае обычной операции присваивания, у выражения с использованием сокращенной операции присваивания есть значение - значение того, что было сохранено в первый операнд в результате выполнения операции. Это означает, что выражение с использованием сокрашенной операции присваивания можно использовать в качестве операнда другой операции.
Например:
z = x += (y *= 7) - 1;
Здесь выражение y *= 7 использовано в качестве первого операнда операции -, а получившееся выражение (y *= 7) - 1 в качестве второго аргумента операции +=, ну и наконец получившееся выражение x += (y *= 7) - 1 использовано в качестве второго операнда операции =, а с помощью получившегося при этом выражения z = x += (y *= 7) - 1 был записан оператор-выражение (после выражения поставлена точка с запятой).