Инкремент и декремент в С




інкремент в с ++, декремент в с ++, інкремент і декремент в с ++, c ++В предыдущей статье мы с вами рассмотрели бинарные операторы, которые используют для арифметических операций с двумя операндами (переменными). А в цьому уроці ми навчимося застосовувати унарні оператори, для которых необходим один операнд. Называются они инкремент ( ++ ) і декремент (). Роль этих операторов в том, чтобы изменить (увеличить или уменьшить соответственно) значение переменной на единицу, при этом значение будет перезаписано. Рассмотрим пример, в якому будемо змінювати значення змінної variable на единицу тремя различными способами:

После каждой операции в строках 11, 13 і 15. до значення змінної variable прибавляется единица. Как вы видите, найкоротша запис – это запись с использованием инкремента. Ниже, в строках 17 – 19, мы трижды применили декремент и в итоге получим значение variable уменьшенное на 3.

Компилируем:

инкремент и декремент

Оба этих унарных оператора могут иметь две формы: постфиксную ( когда оператор расположен сразу за переменной) і префиксную (оператор расположен перед переменной). У розглянутому прикладі ми застосовували постфіксні форми инкремента і декремента. Чим же відрізняються ці форми один від одного? И первая и вторая формы этих операторов выполняют одинаковые роли – збільшення або зменшення змінної на одиницю. Але якщо в рядку коду, где применяются инкремент или декремент, присутствуют еще какое-либо команды, тогда эти операторы по-разному себя ведут. Постфиксная форма будет применена после выполнения других команд. Посмотрим на следующем примере:

В результате выполнения кода строки 12, мы увидим на экране число 0. Так произойдет потому, що збільшення на одиницю виконається після виведення значення змінної variable на екран. Щоб переконатися, , что значение действительно изменилось – в строке 13 просим показать нам variable. А ось у разі застосування префиксной форми инкремента (рядок 16), переменная сразу перезапишется и уже только после этого произойдет вывод на экран. Для декремента все те ж саме, но с уменьшением на единицу.

Компилируем:

инкремент и декремент

Вот посмотрите еще на этот пример:

Результат:
инкремент и декремент

Постарайтесь понять, почему в результате операций строки 11, переменная a стала равна 10. Задавать вопросы в комментариях не запрещается :)

Нові уроки з програмування:

Инкремент и декремент в С
4.6 (91.11%) 9 голосів

36 думки про "Инкремент и декремент в С

  1. Допоможіть розібратися в завданні:
    х = у = 0;
    while ( і < 10 ) х + = ++ і;
    Printf (" x= %d y = %d\n", x, і);

    Відповідь x = 55 у = 10
    Я не розумію як x виходить 55. Прям голову зламала(((

    1. х = 0 + 1 = 1
      х = 1 + 2 = 3
      х = 3 + 3 = 6
      х = 6 + 4 = 10
      х = 10 + 5 = 15
      х = 15 + 6 = 21
      х = 21 + 7 = 28
      х = 28 + 8 = 36
      х = 36 + 9 = 45
      х = 45 + 10 = 55

      pervaya cifra eto zna4enie x a vtoraya cifra eto zna4enie y, голосування і результати, ++y srazu uveli4ivaet zna4enie y na 1

  2. х = 0 + 1 = 1
    х = 1 + 2 = 3
    х = 3 + 3 = 6
    х = 6 + 4 = 10
    х = 10 + 5 = 15
    х = 15 + 6 = 21
    х = 21 + 7 = 28
    х = 28 + 8 = 36
    х = 36 + 9 = 45
    х = 45 + 10 = 55

    pervaya cifra eto zna4enie x a vtoraya cifra eto zna4enie y, голосування і результати, ++y srazu uveli4ivaet zna4enie y na 1

  3. До речі, а чому виходить число 10 , в строке 11 ?? Я використовую CodeBlock як середовище. Спочатку написав сам код, отримав 9. Потім спеціально скопіював ваш і … знову 9. Я так розумію, що в процесі розрахунку,коли обробляється другий інкремент, він далі множиться на 2, а тільки після цього складається з лівою частиною команди. може поясните, чому так ? Або так і повинно бути ? Тоді чому у вас 10? Та й voobshte, алгоритм дещо не логічним виходить…

    1. а = ++ змінна + 1 + ++змінна * 2;
      а =(2+1+3)*2; \\ я все правильно розумію?

      тоді виходить 12))

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *