Программирование на языке 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, множественные ссылки на переменные могут снизить быстродействие программы. Используйте сокращенные операторы присваивания, где только это возможно. Они ускорят выполнение программы.
< Предыдущая | Следующая > |
---|