Программирование на языке C. Операторы присваивания

Рассмотрим следующий простой оператор, который присваивает значение В переменной А:



А = В; /* присвоить значение В переменной А */

В результате выполнения этого оператора значение В не изменяется, а прежнее значение А исчезает, как утренний туман в лучах солнца.

Выражение

А = 1234;

вполне законно при условии, что переменная А может хранить числовые значения. Выражение

1234 = А; /* ??? */

не имеет смысла и не будет компилироваться, потому что литеральная константа (1234) не является переменной и не может принимать значения.

Множественное присваивание

Каждое выражение имеет свое значение. Выражение (А = В) имеет значение, равное значению присваиваемого операнда. Следовательно, выражение

С = (А = В);

полностью допустимо. Сначала заключенное в круглые скобки подвыражение (А = В) присваивает значение В переменной А. Затем значение этого подвыражения (равное В) присваивается переменной С. Таким образом, как переменная С, так и А, сейчас равна В. Можно даже обойтись без круглых скобок. Выражение

С = А = В;

присваивает значение В переменным А и С.

Принимая это во внимание, возьмите на вооружение один из способов инициализации многих переменных. Выражение

С=А=В= 451;

присваивает число 451 переменным А, В и С.

Сокращенный оператор присваивания

Операторы присваивания иногда выполняют больше работы чем нужно. В операторе

А = А + 45;

компилятор сначала генерирует код для вычисления выражения А + 45, результат которого затем присваивается опять переменной А. То же самое выражение можно записать проще:

А += 45;

Эта запись помогает компилятору сгенерировать программный код более рационально. Двойной символ += называется сокращенным оператором присваивания. Вот набор сокращенных операторов:

*=, /=, +=, —= , %=, &=, ^=, |=.

Следующие несколько примеров демонстрируют, как работает сокращенная форма операторов (переменная count имеет тип int).

count +=10; /* count = count + 10; */

count *= 2; /* count = count * 2; */

count /= 3; /* count = count /3; */

count %= 16; /* count = count % 16; */

Большинство современных компиляторов способны генерировать эффективный программный код и для полных форм операторов присваивания, но в сложных выражениях, где участвуют не такие простые переменные, как count, множественные ссылки на переменные могут снизить быстродействие программы. Используйте сокращенные операторы присваивания, где только это возможно. Они ускорят выполнение программы.

 

 

Популярные шаблоны