int var1 = 10 ;
int var2 = -var1 ;
Здесь в последнем выражении используется унарный оператор "-".
Оператор "минус" изменяет знак своего аргумента ( в примере это var1 ) на противоположный. Положительные числа становятся отрицательными и наоборот. Оператор "плюс" знака аргумента не изменяет и фактически вообще ни на что не влияет.
Операторы ++ и -- увеличивают или, соответственно, уменьшают на 1 значение аргумента и поэтому называются операторами инкремента и декремента ( от англ. ( увеличивать ) и ( уменьшать ). — Прим. перев. ). К действительным переменным применение этих операторов недопустимо. После выполнения приведённого ниже фрагмента значение переменной будет равно 11.
/* Инициализация переменной */
int var = 10 ;
/* Её увеличение; значение переменной равно 11 */
var++ ;
Операторы инкремента и декремента могут находиться либо перед аргументом ( префиксная форма ), либо после него ( постфиксная форма ). В зависимости от способа записи, выполнение операторов инкремента и декремента имеет свои особенности. Рассмотрим оператор инкремента ( принципы работы оператора декремента те же ).
Предположим, что переменная n имеет значение 5. Оба способа применения к n оператора инкремента ( ++n и n++ ) приведут к результату 6. Разница между ними состоит в том, что значение n в выражении ++n равно 6, в то время как в выражении с постфиксной формой записи оно равно 5. Это можно проиллюстрировать следующим примером:
/* объявляем три целые переменные */
int n1 , n2 , n3 ;
n1 = 5 ;
n2 = ++n1 ; /* обе переменные - n1 и n2 - получают значение 6 */
n1 = 5 ;
n3 = n1++ ; /* n1 принимает значение 6, а n3 - 5 */
Другими словами, переменной n2 присваивается уже увеличенное префиксным оператором инкремента значение n1, тогда как переменной n3 передаётся ещё не увеличенное постфиксным оператором значение n1.
Почему так важен оператор инкремента...53
Разработчики С++ заметили, что программисты прибавляют 1 чаще, чем любую другую константу. Учитывая это, в язык была добавлена соответствующая конструкция.
Кроме того, большинство процессоров способны выполнять команды инкремента быстрее, чем команды сложения. Учитывая мощность микропроцессоров, которые использовались во время создания С++, подобное нововведение было действительно важным.
_________________
53 стр. Глава 3. Выполнение математических операций
►Использование операторов присвоения...54
Операторы присвоения являются бинарными, изменяющими значения своих левых аргументов. Обыкновенный оператор присвоения "=" абсолютно необходим во всех языках программирования. Этот оператор сохраняет значение правого аргумента в левом. Однако причуды авторов языка привели к появлению и других операторов присвоения.
Создатели С++ заметили, что присвоение часто имеет вид
variable = variable # constant
Здесь # представляет собой какой-то бинарный оператор. Следовательно, чтобы увеличить целую переменную на два, программист может написать:
nVariable = nVariable + 2 ;
Из этой записи следует, что к значению переменной nVariable добавляется двойка и результат снова сохраняется в nVariable.
«Использование в левой и правой части выражения одной и той же переменной — весьма распространённое явление в программировании.»
[Советы]
Поскольку одна и та же переменная находится по обе стороны знака равенства, было решено просто добавить оператор, используемый при вычислении, к знаку присвоения. В таких специфических операторах присвоения допускается использование всех бинарных операторов. Поэтому указанное выше выражение можно сократить до