zerou24

C++ Inkrement- und Dekrementoperator. Grundlagen Probleme

Hallo ich habe ein problem entweder ist es zu spät am abend oder ich bin blöd.. Ich lerne grade die "basics" von c++ durch ein Buch in dem Aufgaben gestellt werden. Aufgabe: "Welcher wert wird in den folgenden Zeilen ausgegeben" code:
//Fehlerkorrektur
#include <iostream>
using namespace std;
int main() {
	int ival1, ival2 = 2;
	float fval1 = 3.5f;
	ival1 = fval1;
	cout << ival1 << '\n';  
	cout << ival1 / ival2 << '\n';  
	cout << static_cast<int>(fval1 / ival2) << '\n';  
	cout << static_cast<float>(fval1 / ival2) << '\n';  
}
Ich verstehe das komplette Thema nicht kann mir das jemand nochmal anfängerfreundlich erklären? wieso kommt beim ersten 3 raus als ausgabe ?
probleme habe ich auch bei:
 int i = 1;
cout << i--  << '\n'  
cout  << ++i << '\n'  
cout << i++ << '\n'  
cout << ++i << '\n'  

Wieso kommt da überall eins und am ende 3 raus eig müsste es doch in der ersten zeile 1 sein in der zweiten 2 in der dritten 4 und in der vierten 5 wieso nun 1 1 1 3 ? bitte um hilfe bin am verzweifeln face-sad
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 293001

Url: https://administrator.de/forum/c-inkrement-und-dekrementoperator-grundlagen-probleme-293001.html

Ausgedruckt am: 12.05.2025 um 10:05 Uhr

Pjordorf
Lösung Pjordorf 13.01.2016, aktualisiert am 14.01.2016 um 14:04:09 Uhr
Goto Top
Hallo,

Zitat von @Zerou24:
Ich lerne grade die "basics" von c++ durch ein Buch
Und hinten angefangen zu lesen weil die ersten Seiten sind doch nur was kiddies? Ein paar Kapitel übersprungen?

Wieso kommt da überall
Grundlagen face-smile Schau mal hier http://www.easy-coding.de/index.php/Thread/2268-i-und-i-Unterschied-lie ...

Gruß,
Peter
BirdyB
BirdyB 13.01.2016 aktualisiert um 23:20:30 Uhr
Goto Top
Zitat von @Zerou24:
Hi,
Hallo ich habe ein problem entweder ist es zu spät am abend oder ich bin blöd.. Ich lerne grade die "basics" von c++ durch ein Buch in dem Aufgaben gestellt werden. Aufgabe: "Welcher wert wird in den folgenden Zeilen ausgegeben" code:
//Fehlerkorrektur
> #include <iostream>
> using namespace std;
> int main() {
> 	int ival1, ival2 = 2;
> 	float fval1 = 3.5f;
> 	ival1 = fval1;
> 	cout << ival1 << '\n';  
> 	cout << ival1 / ival2 << '\n';  
> 	cout << static_cast<int>(fval1 / ival2) << '\n';  
> 	cout << static_cast<float>(fval1 / ival2) << '\n';  
> }
> 
Ich verstehe das komplette Thema nicht kann mir das jemand nochmal anfängerfreundlich erklären? wieso kommt beim ersten 3 raus als ausgabe ?
ival ist eine integer... Integer haben keine Nachkommastellen. Bei der Konvertierung von float nach integer (ival1 = fval1;) werden die Nachkommastellen entfernt.
probleme habe ich auch bei:
 int i = 1;
> cout << i--  << '\n'  
> cout  << ++i << '\n'  
> cout << i++ << '\n'  
> cout << ++i << '\n'  
> 
Wieso kommt da überall eins und am ende 3 raus eig müsste es doch in der ersten zeile 1 sein in der zweiten 2 in der dritten 4 und in der vierten 5 wieso nun 1 1 1 3 ? bitte um hilfe bin am verzweifeln face-sad

Das ist schon richtig so... es gibt Pre- und Postinkrement...
int i = 1;    //i ist 1
//i ist immer noch 1
cout << i--  << '\n' //i wird erst ausgegeben und dann um 1 verringert (Postinkrement)  
//i ist jetzt 0
cout  << ++i << '\n' //i wird erst um 1 erhöht und dann ausgegeben (Preinkrement)  
//i ist jetzt 1
cout << i++ << '\n' //i wird jetzt erst ausgegeben und dann um 1 erhöht (Postinkrement)  
//i ist jetzt 2
cout << ++i << '\n' // i wird erst um 1 erhöht und dann ausgegeben (Preinkrement)  
//i ist jetzt 3

Es macht eben einen Unterschied ob ++ oder -- vor oder nach dem i steht...

Beste Grüße


Berthold
Zerou24
Zerou24 14.01.2016 um 14:03:37 Uhr
Goto Top
Dass es richtig ist weiß ich nur och verstehe das ergebnis nicht und wo liegt denn der unterschied bei i++ und ++i ?
Zerou24
Zerou24 14.01.2016 um 14:05:01 Uhr
Goto Top
Nein nicht wirklich das ist fast noch der anfang nur diese "lernkontrolle" also explizit diese Aufgabe kriege ich nicht hin/verstehe das ergebnis nicht
122990
122990 14.01.2016 aktualisiert um 14:10:52 Uhr
Goto Top
Moin
Zitat von @Zerou24:
Dass es richtig ist weiß ich nur och verstehe das ergebnis nicht und wo liegt denn der unterschied bei i++ und ++i ?

Das hat Berthold doch eigentlich schon eindeutig und eigentlich unmissverständlich geschrieben:
back-to-topPost-Inkrement: i++
Bedeutet das die Variable erst nach der Ausgabe hochgezählt wird, wenn man also i++ ausgibt wird der aktuelle Wert der Variablen ausgegeben und erst danach (Post) hochgezählt.
back-to-topPre-Inkrement: ++i
Genau das Gegenteil von Post-Inkrement, hier wird der Wert der Variablen vor der Ausgabe hochgezählt und sie dann ausgegeben.

Kann man hier schön nachlesen
https://de.wikipedia.org/wiki/Inkrement_und_Dekrement#Wertzuweisungszeit ...

Gruß grexit
BirdyB
BirdyB 14.01.2016 um 16:47:07 Uhr
Goto Top
Zitat von @Zerou24:

Dass es richtig ist weiß ich nur och verstehe das ergebnis nicht und wo liegt denn der unterschied bei i++ und ++i ?
Das habe ich dir doch oben in deinem Code kommentiert... Lesen würde helfen...
Pjordorf
Pjordorf 14.01.2016 um 20:27:14 Uhr
Goto Top
Hallo,

Zitat von @Zerou24:
nur och verstehe das ergebnis nicht
Nun, lesen musst du schon selbst. Das Verstehen dann auch. Da können wir schlecht helfen. Aber auch hier stand schön was der kleine aber doch vorhandene Unterschied ausmacht. C++ Inkrement- und Dekrementoperator. Grundlagen Probleme Du musst dir nur eine Methode erarbeiten die dein gelesenes in Wissen verwandelt - Üben üben üben üben. Der beste Rechner zum lernen besteht immer noch aus Papier und Bleistift und du spielst die CPU bzw. die APU..

Gruß,
Peter