Erhöhen und Verringern in C ++




der Zuwachs in C ++, Dekrement in c ++, Zuwachs und Abnahme der mit ++, C ++das vorheriger Artikel wir sind binäre Operatoren betrachtet, welches für arithmetische Operationen mit zwei Operanden verwendet, (Variablen). In dieser Lektion lernen wir, wie man die unäre Operatoren anwenden, die erfordern ein Operand. sie genannt werden Zuwachs ( ++ ) und Dekrement (). Die Rolle dieser Betreiber in, zu ändern (erhöhen bzw. zu verringern,) der Wert einer Variablen um eins, und der Wert wird überschrieben. Betrachten Sie das Beispiel, welche den Wert einer Variablen ändern Variable Einheit auf drei verschiedene Weisen:

Nach jeder Operation in den Zeilen 11, 13 und 15. auf die Variable Variable um eins erhöht. Wie Sie sehen können, die kürzeste Aufzeichnungs – ein Datensatz mit dem Zuwachs. unten, auf den Leitungen 17 – 19, Wir haben drei Mal dekrementiert angewendet und erhalten schließlich den Wert Variable reduziert 3.

Kompiliruem:

Inkrement- und Dekrement

Beide unärer Operator kann zwei Formen haben: postfix ( wo der Bediener befindet sich direkt hinter der Variablen) und Präfix (die Bedienungsperson vor der variable befindet). In diesem Beispiel verwendeten wir Postfix-Inkrement- und Dekrement. Was ist der Unterschied zwischen diesen Formen voneinander? Sowohl die ersten und zweiten Formen dieser Operatoren führen die gleiche Rolle – Erhöhen oder Verringern einer Variablen um eins. Aber wenn eine Zeile Code, wo die Zunahme oder Abnahme angewendet wird, präsentieren weitere Befehle, während diese Operatoren auf unterschiedliche Weise verhalten. Postfix wird nach den anderen Teams verwendet werden. Schauen wir uns das folgende Beispiel aussehen,:

Als Ergebnis der Codezeilen 12, wir werden auf dem Bildschirm sehen, die Zahl der 0. Es geschieht, weil, dass der Anstieg in der Einheit wird nach dem Abzug Wert der Variablen auszuführen Variable der Bildschirm. Um sicherzustellen, dass, dass der Wert tatsächlich geändert – in Zeile 13 bitte zeigen Sie uns Variable. Aber im Fall des Präfixes Form Inkrement (Reihe 16), Variable überschrieben direkt und bereits nur dann angezeigt werden. Zu dekrementieren alle die gleiche, aber mit einer Reduktionseinheit.

Kompiliruem:

Inkrement- und Dekrement

Hier ist ein Blick auf dieses Beispiel mehr:

Ergebnis:
Inkrement- und Dekrement

Versuchen Sie zu verstehen, weshalb als Ergebnis einer Reihe von Operationen 11, Variable ein Es wurde gleich 10. Fragen zu stellen, in den Kommentaren nicht verboten :)

Newsletter neue Lektionen über die Programmierung:

Erhöhen und Verringern in C ++
4.3 (86.67%) 12 Stimmen

48 Gedanken zu "Erhöhen und Verringern in C ++

  1. Помогите разобраться в задаче:
    x = y = 0;
    während ( und < 10 ) x += ++ und;
    printf (" x= %d y = %d\n", x, und);

    Ответ x = 55 y = 10
    Я не понимаю как x получается 55. Прям голову сломала(((

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

      pervaya cifra eto zna4enie x a vtoraya cifra eto zna4enie y, vot i resultat, ++y srazu uveli4ivaet zna4enie y na 1

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

    pervaya cifra eto zna4enie x a vtoraya cifra eto zna4enie y, vot i resultat, ++y srazu uveli4ivaet zna4enie y na 1

  3. übrigens, а почему получается число 10 , in Zeile 11 ?? Я использую CodeBlock как среду. Вначале написал сам код, получил 9. Потом специально скопировал ваш иснова 9. Я так понимаю, что в процессе расчета,когда обрабатывается второй инкремент, он далее умножается на 2, а только после этого складывается с левой частью команды. Может объясните, warum so ? Или так и должно быть ? Тогда почему у вас 10? Да и вообще, алгоритм несколько не логичным выходит

  4. Такая последовательность вычислений?
    a = ++ Variable + 1 + ++Variable * 2
    a = (2 + 1 + 2) * 2

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

      Тогда получается 12))

  5. Мне не понятно! Если считать правильно, то должно получиться 7, als – 2+1+2*2 = 7.
    aber 10 получиться, если компилятор воспринял значения (2+1+2) как в скобках, а почему он так воспринял не понятно и как писать, что бы не воспринимал так!?
    А вот больше всего мне не понятнопочему в онлайн компиляторе вообще получается 9!? – я даже не понял как он так посчитал! Может кто-то объяснит?

  6. so, сейчас понял, что второй инкремент тоже увеличиваетсяно тогда в онлайн компилляторе правильно – 9, но почему 10 – вот не понятно!?

  7. Also, на сколько я понял, компилятор сначала вычисляет variable.
    1. variable=1+1, присвоено 2.
    2. variable=2+1, присвоено 3.
    Теперь вычисляется а=3+1+3×2=10. so?

    1. точно не считал попрограммированию”, но как и считал 9 должно должно получитьсятак понялкак и в компилляторетут может опечатка или что-то вроде того….

      1. Проверил в 2-х онлайн компиляторах, та же петрушка, а=9. Но по идее должно быть 10,т.к приоритет у пре-инкремента 3 RL, а по сему сначала variable вычисляется, а потом уже он принимает участие в примере. И он по-любому равен 3, значит пример должен выглядеть так: а=3+1+3*2. Компиляторы же , видимо, считают последовательно, dh. а=2+1+3*2, тогда действительно получается 9. Но почему так?! Я что-то не допонял? Эх, кто бы объяснил подоходчивей.

  8. 2+1+2*2
    второй variable все еще хранит значение 1, в тот момент когда первый variable уже 2. но вот арифметика мне пока непонятна. умножение то должно выполняться первым.

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *