|
Программирование >> Структурное программирование
Рис. 2.12. Арифметические операции присваивания Совет по повышению эффективности 2.1 Программисты могут писать программы несколько быстрее и компилятор может компилировать их немного быстрее, если использовать сокращенные операции присваивания (составные присваивания). Некоторые компиляторы генерируют код, который выполняется быстрее при использовании сокращенных операций присваивания. Совет по повышению эффективности 2.2 Многие из советов по повышению эффективноаи, которые мы будем давать в этой книге, приводят к незначительному улучшению, так что читатель может иметь искушение пренебречь ими. Значительное повышение эффективности получается, если такие небольшие улучшения находятся внутри цикла и могут повторяться много раз. 2.12. Операции инкремента и декремента в С4-4- имеется унарная операция инкремента 4-4- (увеличение на 1) и унарная операция декремента - (уменьшение на 1), свойства которых приведены на рис. 2.13. Если переменная с должна быть увеличена на 1, лучше применить оператор ++, чем выражения с=с4-1 или с4-=1. Если операция инкремента или декремента помещена перед переменной, говорят о префиксной форме записи инкремента или декремента. Если операция инкремента или декремента записана после переменной, то говорят о постфиксной форме записи. При префиксной форме переменная сначала увеличивается или уменьшается на единицу, а затем это ее новое значение используется в том выражении, в котором она встретилась. При постфиксной форме в выражении используется текущее значение переменной, и только после этого ее значение увеличивается или уменьшается на единицу. Программа на рис. 2.14 демонстрирует различие между префиксной и постфиксной формами операции инкремента 4-4-. Постфиксная форма записи операции инкремента вызывает увеличение переменной с после того, как она использована в операторе вывода. При префиксной форме переменная с изменяется до того, как будет использована в операторе вывода. Программа выводит на экран значения с до и после применения операции ++. Операция - действует аналогично.
Рис. 2.13. Операции инкремента и декремента Префиксная и постфиксная формы операции инкремента #include <iostream.h> main() { int с ; c=5; cout << с << endl; cout С++ endl; cout С endl; c=5; cout с endl; cout << ++C << endl; Префиксная форма инкремента cout << с << endl; return 0; успешное окончание Постфиксная форма инкремента 5 5 6 5 6 б Рис. 2.14. Различие между префиксой и постфиксной формами операции инкремента Хороший стиль программирования 2.11 Унарные операции должны размещаться после их операндов без разделяющего про бела. Три оператора присваивания на рис. 2.11 passes = passes + 1; failures = failures + 1; student = student + 1; могут быть записаны более кратко в виде: passes += 1; failures += + 1; student += 1; ИЛИ с использованием операции инкремента в префиксной форме: ++passes; ++fallures; ++student; или в постфиксной форме: passes++; failures++; student++; Важно отметить, что когда инкремент или декремент переменной осуществляется в виде отдельного оператора, то префиксная и постфиксная формы приводят к одинаковому результату. И только если переменная появляется в контексте более сложного выражения, тогда префиксная и постфиксная формы приводят к разным результатам. В операциях инкремента и декремента могут использоваться как операнды только имена простых переменных (в дальнейшем мы увидим, что в операциях инкремента и декремента могут использоваться так называемые L-величины). Типичная ошибка программирования 2.10 Попытка использовать в операции инкремента или декремента операнд, отличный от имени проаой переменной, например, выражение ++(х+1) является синтаксической ошибкой. В таблице на рис. 2.15 приведены сведения о приоритетах и ассоциативности всех операций, описанных к настоящему моменту. Операции приведены сверху-вниз по мере уменьшения их приоритета. Второй столбец указывает ассоциативность операций на каждом уровне приоритета. Отметим, что условная операция (?:), унарные операции инкремента (++), декремента (-), плюс минус (-) и приведения к типу, операции присваивания =, -1-=, -=, *=, /= и %= имеют ассоциативность справа налево. Все остальные операции в таблице на рис. 2.15 имеют ассоциативность слева направо. В третьем столбце таблицы приведены названия различных групп операций. 2.13. Основы повторения, управляемого счетчиком Для организации повторения, управляемого счетчиком, требуется задать: 1. Имя управляющей переменной (или счетчика циклов).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |