Unterschied i++ & ++i



  • Ich hab hier mal ein kleines Beispiel programmiert, dass mir ohne Hilfe den Unterschied erklären sollte jedoch bleibt es gleich... was hab ich falsch gemacht oder was bedeutet das genau?

    PS: Warum bleibt es auf 1 stehen wenn ich das static weglasse ?

    #include <iostream>
    
    void InkrementVor()
    {
    	static int i1 = 0;
    	++i1;
    	std::cout << i1 << std::endl;
    }
    
    void InkrementNach()
    {
    	static int i2 = 0;
    	i2++;
    	std::cout << i2 << std::endl;
    }
    
    int main()
    {
    	InkrementVor();
    	InkrementVor();
    	InkrementVor();
    	InkrementVor();
    	InkrementVor();
    	std::cout << "-------------" << std::endl;
    	InkrementNach();
    	InkrementNach();
    	InkrementNach();
    	InkrementNach();
    	InkrementNach();
    
    	system("PAUSE");
    	return 0;
    }
    

  • Mod

    int i1 = 1;
    int i2 = 1;
    cout << "Vor Präinkrement: " << i1 << "\nVor Postinkrement: " << i2;
    cout << "\n\"Während\" Präinkrement: " << ++i1 << "\n\"Während\" Postinkrement: " << i2++;
    cout << "\nNach Präinkrement: " << i1 << "\nNach Postinkrement: " << i2;
    

    Damit klarer?

    Wobei das "Während" hier bewusst in Anführungsstriche gesetzt ist. Zum Zeitpunkt der Ausgabe ist das Inkrement längst erfolgt, der Unterschied liegt im Rückgabewert der beiden unterschiedlichen Inkrementoperatoren.

    PS: Warum bleibt es auf 1 stehen wenn ich das static weglasse ?

    Weil du dann jeweils auf brandneuen Variablen arbeitest.


Log in to reply