berechnungen in c



  • Hallo,

    Ich hab ne frage..
    Wieso beim ersten Programm 5 raus kommt.

    Das x--;
    verkleindert x um 1.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    
    	int x = 2;
    
    	x = 3* x--; // ergebnis 5 
    	printf("%i",x);
    
    }
    

    Dann müsste hier 3 kommen?

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    
    	int x = 2;
    
    	x = 3* --x; // ergebnis 3 
    	printf("%i",x);
    
    }
    

    Ich dachte bei beiden kommt 3 raus. weil x um ein verkleindert wird und anschließend mit 3 multiplitziert wird.



  • Das ist der Unterschied zwischen prefix und postfix, ersteres dekrementiert erst, letzteres dekrementiert anschließend



  • .....so versteh ich bahnhof.. ein beispiel dazu währ mal nicht schlecht.



  • int x = 5;
    int y = 5;
    int z;
    
    printf("%d\n", x--); // Ausgabe: 5
    
    x = 5;
    
    printf("%d\n", --x); // Ausgabe: 4
    
    //genauso
    
    z = y++; // z == 5
    
    z = y;   // jetzt ist z = 6
    
    z = --y; // jetzt ist z wieder 5
    


  • Um es mal anhand deines Phenomens zu erleutern:

    int x = 2;
     x = 3* x--;
    

    hier wird x erst in der Rechnung verwendet und erst nach der Rechnung dekrementiert. Also er rechnet 3*2, weist dies x zu und vermindert dies dann um 1 => 5

    int x = 2;
     x = 3* --x;
    

    hier ist es genau andersrum. Erst wird x um eins vermindert, ist also 1 und wird dann in der Rechnung verwendet => 3


Anmelden zum Antworten