cout und printf


schiese

Erfahrenes Mitglied
Hallo,

ich fange gerade an, mir etwas C++ anzugucken. Konsolenausgaben sind, soweit mir bekannt, mit cout und printf möglich. Beides klappt auch bestens. Jetzt habe ich beides mal kombiniert
C++:
std::cout << printf("%.2f",15.177777);
(ich weiß, dass es eigentlich keinen Sinn macht und nicht der Anwendung der Funktion printf entspricht) und erhalte die folgende Ausgabe:
Code:
15.185
Die 15.18 ist die gerundete Zahl. Was die 5 bedeutet, ist mir allerdings nicht klar. Kann es das 5te ASCII-Zeichen sein, das als Integerwert dargestellt wird und von printf mit zurückgegeben wird?

Viele Grüße
schiese
 

cwriter

Erfahrenes Mitglied
Kann es das 5te ASCII-Zeichen sein, das als Integerwert dargestellt wird und von printf mit zurückgegeben wird?
Nein, das ist kein ASCII-Zeichen. Aber von vorne:
printf() ist ein Argument zum operator<< von std::cout. Da C++ eager evaluiert, wird printf() zuerst aufgerufen und schreibt eine gerundete Zahl ins stdout: 15.18. Der Rückgabewert von printf() ist die Anzahl geschriebener Zeichen, also 5.
std::cout sieht den Rückgabetyp, weiss also, dass es einen int schreiben muss, und bekommt den Wert 5. Daher schreibt std::cout noch eine 5 dazu, also "15.185".

Gruss
cwriter