PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C/C++] Merkwürdiger Fehler



mario88
22-09-2004, 21:36
Ich hab ein Problem mit folgendem C++-Programm (bin noch Anfänger ^^)


#include <iostream>

using namespace std;


int sumGeradeZahlen()

{
int summe;
int tmp=1;

while (tmp!=0)

{
cout << "Geben Sie eine Zahl ein: " << endl;
cin >> tmp;

if (tmp%2==0)

{
summe=summe+tmp;
}
}

return summe;
}

void showErgebnis(int wert)

{
cout << "Die Summe der geraden Zahlen betraegt: " << wert << endl;
}


void zeigeBegruessungstext()

{
cout << "DAS ULTIMATIVE PROGRAMM!!!!" << endl;
cout << "-------------------------------------------" << endl;
}

int main()

{
int erg;

zeigeBegruessungstext();

erg=sumGeradeZahlen();

showErgebnis(erg);

return 0;

}

Mal zur Erklärung:
Das Programm soll Zahlen abfragen, solange bis man eine Null eingibt und alle geraden Zahlen summieren und dann die Summe ausgeben.
Mit dem VC++ Compiler funktioniert das Programm dann nachher, aber mit g++ nicht.


mario@workstation Desktop $ ./lol
DAS ULTIMATIVE PROGRAMM!!!!
-------------------------------------------
Geben Sie eine Zahl ein:
3
Geben Sie eine Zahl ein:
4
Geben Sie eine Zahl ein:
2
Geben Sie eine Zahl ein:
0
Die Summe der geraden Zahlen betraegt: 134514402

Hallo?
Das kanns ja nicht sein.
Wie gesagt, mit VC++ funktioniert das...
Ich hab das Programm ganz normal mit g++ datei.cpp kompiliert...

wraith
22-09-2004, 21:41
Setze am Anfang summe auf 0.
Dein MSVC++ wird in der Debug Einstellung summe automatisch auf 0 gesetzt haben, das ist aber nicht garantiert.

mario88
22-09-2004, 21:50
thx, funktioniert wunderbar. :)

Aber wieso muss ich da summe auf 0 setzen, das versteh ich nicht ganz...

panzi
22-09-2004, 21:56
thx, funktioniert wunderbar. :)

Aber wieso muss ich da summe auf 0 setzen, das versteh ich nicht ganz...
Weil C/C++ prinzipiell nix initialisiert. Sind (relat.) lowlevel Sprachen (vor allem C). Es wird Speicher für summe reserviert, aber das was vorher drinn stand wird nicht mit 0 überschrieben.

mario88
22-09-2004, 21:59
Weil C/C++ prinzipiell nix initialisiert. Sind (relat.) lowlevel Sprachen (vor allem C). Es wird Speicher für summe reserviert, aber das was vorher drinn stand wird nicht mit 0 überschrieben.
aso, ich hab ma dacht das wird mit 0 initialisiert...

thx

peschmae
23-09-2004, 07:00
Globale Variablen werden mit 0 initialisiert - aber es ist sowieso allgemein eine gute Idee, weil klarer, die Variablen selber auf 0 zu setzen.

MfG Peschmä