++i; i++; Wieso werden beide Variablen erhöht aber am Ende nurnoch eine?

Dieses Thema im Forum "Webmaster Hilfe / Programmierer Forum" wurde erstellt von GConscience, 30.06.2012.

  1. #1 GConscience, 30.06.2012
    GConscience

    GConscience Neuer Benutzer

    Dabei seit:
    19.06.2012
    Beiträge:
    12
    Zustimmungen:
    0
    Hallo nochmal, es kann sein das ich heute und morgen noch ein paar Fragen stellen werde weil ich am Montag Prüfung für die C-Programmierung habe und einfach noch die letzten Lücken schließen möchte :)

    Habe gerade folgendes Programm:

    HTML:
    #include <stdio.h>
    
    int main (int argc, const char * argv[])
    {
    
        int a = 2;
        int b = 7;
        int c = 10 + (++a) + (b++);
    
    
    
        printf("%d\n%d\n%d\n",a,b,c);
    
    
    
        getch();
        return 0;
    
    }
    Ergebnis ist

    HTML:
    3
    
    8
    
    20
    Ich verstehe nicht warum das Ergebnis nicht

    HTML:
    3
    
    7
    
    21
    ist..

    Denn eigentlich wird doch bei b++ die Variable nach Aufruf erhöht und bei ++a direkt, also müsste doch eigentlich erst nur a erhöht werden und dann erst wenn die c Variable ausgegeben wird b erhöht, und nicht schon vorher aber am Ende bei der Ausgabe von c nicht mehr?
     
  2. AdMan

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. #2 xandros, 30.06.2012
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.891
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Warum sollte als Ergebnis 3 7 21 vorhanden sein?

    ++a -> Prefix Incrementation: Die Variable wird erhoeht bevor sie weiterverwendet wird.
    b++ -> Postfix Incrementation: Die Variable wird erst nach der Verwendung erhoeht.
    Bei der Berechnung von C wird A von 2 auf 3 erhoeht und B behaelt zunaechst den Wert 7. Ergebnis somit 10+3+7=20. Danach wird B erst erhoeht.
     
  4. #3 GConscience, 30.06.2012
    Zuletzt bearbeitet: 30.06.2012
    GConscience

    GConscience Neuer Benutzer

    Dabei seit:
    19.06.2012
    Beiträge:
    12
    Zustimmungen:
    0
    Okay aber wenn B danach erst erhöht wird, wieso gibt die Konsole dann aus das b=8 ist? Wenn b erst danach erhöht wird und a sofort, dann muss das was am Ende bei der Konsole rauskommt doch


    HTML:
    3
    
    7
    
    20
    sein, und wenn ich jetzt b nochmal Aufrufe erst dann 8?
     
  5. #4 xandros, 30.06.2012
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.891
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Nein! B ist zum Zeitpunkt der Berechnung noch bei dem Wert 7. Sobald C berechnet wurde, wird B durch die Postfix Incrementation (das nachgestellte ++) ebenfalls erhoeht.

    Im Prinzip macht die Zeile
    Code:
    int c = 10 + (++a) + (b++)
    folgendes:
    1) erhoehe die Variable a
    2) berechne Variable c
    3) erhoehe die Variable b
    in genau dieser Reihenfolge.

    Die Ausgabe der Variablenwerte erfolgt ja erst einen Schritt danach.
     
  6. #5 GConscience, 30.06.2012
    GConscience

    GConscience Neuer Benutzer

    Dabei seit:
    19.06.2012
    Beiträge:
    12
    Zustimmungen:
    0
    Okay verstanden, vielen lieben Dank :)
     
Thema: ++i; i++; Wieso werden beide Variablen erhöht aber am Ende nurnoch eine?
Besucher kamen mit folgenden Suchen
  1. c variable i statt 1 erhöhen

    ,
  2. variable i

    ,
  3. c variable i

    ,
  4. i vista probleme,
  5. i in einem html,
  6. i rechner
Die Seite wird geladen...

++i; i++; Wieso werden beide Variablen erhöht aber am Ende nurnoch eine? - Ähnliche Themen

  1. PC/Laptop oder beides? Kaufberatung

    PC/Laptop oder beides? Kaufberatung: Hallo ich bin Wattestaebchen, ich habe Probleme mit der Entscheidungsfindung für folgendes Dilemma: Ich benötige einen mobiles Gerät für Office...
  2. CPU Voltage automatisch erhöht ?

    CPU Voltage automatisch erhöht ?: Ich versuche mich gerade an meinen ersten OC versuchen. Habe mich auch schon ein wenig belesen. Ich habe einen i5 3570k, welchen ich momentan auf...
  3. Hardware für 50K I-Net

    Hardware für 50K I-Net: Hallo zusammen, nachdem wir auf 50K geupgradet haben, habe ich bemerkt: Notebooks = volle Rate (Download vorhin mit 6MB/s +), Smartphones =...
  4. Fernseher für Games o h n e S p i e g e l l a c k

    Fernseher für Games o h n e S p i e g e l l a c k: Fernseher für Games Hallo. Hatte ja vor ner Weile schon mal nach nem 50-55" Fernseher ohne nervigen Spiegel-Hochglanz-Lack gefragt. Hatte vor...
  5. Bash-Script: Umlaute in Variable ersetzen

    Bash-Script: Umlaute in Variable ersetzen: Ich habe hier ein Bash-Script, welches ich aufgrund von Problemen mit der Behandlung von Umlauten unter Windows gerne ein wenig anpassen würde....