PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [c++]Variablen ausgabe


Supa
2005-10-29, 14:21:03
#include <iostream>
using namespace std;
int main()
{
int m;
char z;
cout << "m: " << m << ", " << "z: " << z << ". ";
system("pause");
return 0;
}



Warum kommt als ausgabe "m: 2, z: ." raus? müßte nicht "m: , z: ." rauskommen?

Senior Sanchez
2005-10-29, 14:23:55
#include <iostream>
using namespace std;
int main()
{
int m;
char z;
cout << "m: " << m << ", " << "z: " << z << ". ";
system("pause");
return 0;
}



Warum kommt als ausgabe "m: 2, z: ." raus? müßte nicht "m: , z: ." rauskommen?

Nope, müsste nicht.
Du hast die Variablen nicht initialisiert und somit verweisen sie meist auf irgendwelche Werte im Speicher, sodass dann auch scheinbar unlogische Dinge ausgegeben werden können.

Supa
2005-10-29, 14:30:38
das hab ich mir auch gedacht. Ist denn auch normal das dieser Wert auf allen getesten PC gleich ist, also immer dieses "m: 2, z: ." rauskommt? Zufall ist das ja nicht mehr.

Coda
2005-10-29, 16:08:49
Das ist Compiler- und Maschinenabhängig.
Warum da jetzt genau immer 2 rauskommt weiß ich nicht, es ist Zufall, dass an dieser Stelle im Stackframe immer eine 2 steht aus irgend einem Grund.

zeckensack
2005-10-30, 01:55:33
Setze die Variablen doch einfach auf irgendwelche Werte. Dann kannst du wenigstens nachvollziehen was da passiert.int m=7;
char z=8;
cout << "m: " << m << ", " << "z: " << z << ". ";Ausgabe: "m: 7, z: 8. ". Klar? Klar!

müßte nicht "m: , z: ." rauskommen?Wieso das denn? Wenn du nichts willst, musst du schon nichts ausgeben. Eine nicht initialisierte Variable ist nicht nichts.

Für das was du dir da vorgestellt hast, müsstest du's schon so machen:cout << "m: " << ", " << "z: " << ". ";