Упражнение. Добавочные и декрементные значения

Завершено

В рамках этого модуля рассматриваются операции приращения и уменьшения значений (инкремент и декремент), которые задаются с помощью специальных операторов, представляющих собой сочетание символов.

Операции инкремента и декремента

Часто необходимо увеличить и/или уменьшать значения, особенно при написании логики цикла или кода, взаимодействующего со структурой данных.

Оператор += добавляет и присваивает значение справа от оператора значению слева от оператора. Таким образом, вторая и третья строки в следующем фрагменте кода равнозначны:

int value = 0;     // value is now 0.
value = value + 5; // value is now 5.
value += 5;        // value is now 10.

Оператор ++ увеличивает значение переменной на 1. Таким образом, вторая и третья строки в следующем фрагменте кода равнозначны:

int value = 0;     // value is now 0.
value = value + 1; // value is now 1.
value++;           // value is now 2.

Эти же методы можно использовать для вычитания, умножения и т. д. Некоторые из них показаны в следующем упражнении.

Примечание.

Такие операторы, как +=, -=, *=, ++ и --, называются составными операторами присваивания, поскольку они не только выполняют некоторую операцию, но и присваивают результат переменной. Например, оператор += называется оператором присваивания сложения.

Написание кода для увеличения и уменьшения значения

  1. Выделите весь код в редакторе .NET и нажмите клавишу DELETE или BACKSPACE, чтобы удалить его.

  2. Введите следующий код в редакторе .NET:

    int value = 1;
    
    value = value + 1;
    Console.WriteLine("First increment: " + value);
    
    value += 1;
    Console.WriteLine("Second increment: " + value);
    
    value++;
    Console.WriteLine("Third increment: " + value);
    
    value = value - 1;
    Console.WriteLine("First decrement: " + value);
    
    value -= 1;
    Console.WriteLine("Second decrement: " + value);
    
    value--;
    Console.WriteLine("Third decrement: " + value);
    
  3. Выполните код. Должен появиться следующий результат:

    First increment: 2
    Second increment: 3
    Third increment: 4
    First decrement: 3
    Second decrement: 2
    Third decrement: 1
    

Примечание.

В "втором добавочном" используется value += 1;. Однако можно было бы использовать любое литеральное int значение (или переменную) для увеличения этой суммы. Это утверждение справедливо и для "второй операции декремента": value -= 1;.

Размещение операторов добавочного и декремента

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

Использование оператора добавочного увеличения до и после значения

  1. Удалите код из предыдущих шагов и введите следующий код в редактор .NET:

    int value = 1;
    value++;
    Console.WriteLine("First: " + value);
    Console.WriteLine($"Second: {value++}");
    Console.WriteLine("Third: " + value);
    Console.WriteLine("Fourth: " + (++value));
    
  2. Выполните код. Должен появиться следующий результат:

    First: 2
    Second: 2
    Third: 3
    Fourth: 4
    

Обратите внимание на следующую строку кода:

Console.WriteLine($"Second: {value++}");

В этой строке выполняется два шага.

  1. Сначала извлекается текущее значение переменной value, после чего оно используется в операции интерполяции строки.
  2. Приращение значения.

Следующая строка кода подтверждает, что было фактически выполнено приращение значения.

Console.WriteLine("Third: " + value);

Рассмотрим последнюю строку кода:

Console.WriteLine("Fourth: " + (++value));

В ней изменен порядок операций, поскольку оператор ++ располагается перед операндом value.

  1. Приращение значения.
  2. Получите новое добавочное значение переменной value и используйте его в строковой операции.

Хотя это не обязательно, вы добавили круглые скобки вокруг выражения (++value) , чтобы улучшить удобочитаемость. Некоторые разработчики могут неправильно понять выражение, в котором рядом друг с другом располагается множество операторов +. Безусловно, любые решения по выбору стиля оформления являются субъективными. Но поскольку единожды написанный кот будет читаться многократно, следует уделять внимание удобочитаемости.

Кратко

Вот что вы узнали до сих пор о математических операциях в C#:

  • С помощью составных операторов присваивания, таких как +=, -=, *=, ++ и --, вы можете выполнять математические операции (например, операции инкремента или декремента), а затем присваивать результат исходной переменной.
  • Поведение операторов инкремента и декремента зависит от того, располагаются ли они до или после операнда.