►Выполнение унарных операций...53 

We use cookies. Read the Privacy and Cookie Policy

С арифметическими бинарными операторами вы неоднократно встречались уже с первого класса. О существовании же унарных операций вы могли и не подозревать, хотя наверняка одну из них использовали довольно часто ( имея дело с отрицательными числами ).

Унарными называются те операторы, которые имеют только один аргумент, например . Унарными математическими операторами являются +, -, ++ и --. Рассмотрим некоторые из них:

      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.