Skip to content

Latest commit

 

History

History
51 lines (30 loc) · 3.09 KB

Сокращённые-операции-присваивания.mediawiki

File metadata and controls

51 lines (30 loc) · 3.09 KB

Начнём с примера. Вместо использования операции присваивания вместе с операцией сложения, когда первый операнд операции сложения совпадает с первым операндом операции присваивания:

    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 был записан оператор-выражение (после выражения поставлена точка с запятой).