Frage zu: Operator: [++][ --] Postfix und Präfix Schreibweise?

HORNSWOGGLE

C++ Beginner
Hi,

Ich würde gerne wissen aus welchem Grund, beim dritten "cout" (Roter Text) die Variable "var", den Wert "2" behält,

ist es weil er 2 mal erhöht und 2 mal den alten Wert weiter gibt, da ja der Integer "var++;" und der selbe nochmal im "cout" , die selbe Schreibweise haben also "Postfix"?

Code:
#include <iostream>
using namespace std;

int main(void){

	int var=1;
	//Inkrementoperator
	cout << "var=" << var <<'\n';  //var=1
	var++;
	cout << "var=" << var << '\n';  //var=2
	cout << "var=" << var++ << '\n';  //var=2
	cout << "var=" << var << '\n';  //var=3
	cout << "var=" << ++var << '\n';  //var=4

	//analog dazu mit dem Dekrementoperator
	var--;
	cout << "var=" << var << '\n';  //var=3
	cout << "var=" << var-- << '\n';  //var=3
	cout << "var=" << var << '\n';  //var=2
	cout << "var=" << --var << '\n';  //var=1

cin.get();

	return 0;
}
 
Beim Postfix-Operator wird zuerst auf die Variable zugegriffen und erst nach dem Zugriff auf den Inhalt wird dieser dann erhöht. Daher heist es ja auch postfix.

MAl ein simples Beispiel zum Postfix;

Code:
int x = 1;
int y = 0;

y = x++;

Was eigendlich passiert sind zwei Teilschritte:

Code:
y = x;  // Zuerst die Zuweisung des aktuellen Wertes
x += 1;   // danach der Inkrement


Im Vergleich Prefix;

Code:
int x = 1;
int y = 0;

y = ++x;

Was eigendlich passiert sind wieder zwei Teilschritte:

Code:
x += 1;   // danach der Inkrement
y = x;  // Zuerst die Zuweisung


In Deinem Beispiel:
Code:
cout << "var=" << var++ << '\n';  //var=2
passiert das gleiche. Es wird zuerst der aktuelle Inhalt aus var an cout übergeben und danach (post) wird der Inhalt von var aufaddiert.
 
Jetzt, ich hab ja ganz vergessen, der Zeiger durchläuft den Code von oben nach unten, somit wird ja das oben stehende "var++;" nur einmal eingelesen.

Ich bin in Gedanken immernoch bei der vorherigen Zeile geblieben, er gibt sie ja an die neue "cout" Zeile weiter.:-)

Also: Anfangs ist die "var=1", in der nächsten Zeile wird sie von "var++;" eingelesen und um 1 erhöht und gibt an zweiten "cout" "var=2"weiter, diese wird von dritten "cout" eingelesen und wieder um 1 erhöht, sind im vierten "cout" "var=3"

Mein Beispiel bei der Ausführung:

var=1
var=2
var=2
var=3
var=4

var=3
var=3
var=2
var=1
 
Zurück