Warum?

Online-tutorials.net Forenübersicht/C++ / C#/Warum?

Antworten Neues Thema Bottom Seite 1 

Autor | Nachricht      nächster / vorheriger Thread

Takeru
Einsteiger

avatar

Registriert seit: 01.2008
Beiträge:1

Warum?
hi!
ich bin gerade am programmieren von C++ und hab da ein Programm gefunden das einen Fehler enthaltet... es geht ja ganz normal sobald man zahlen unter zahlen unter 10000 eingibt. aber Beispielsweiße bei 29076056837465846 beginnt eine Dauerschleife.. warum?

Code:

#include <iostream> 

using namespace std; 

int main() 

int iLoop = 1;

    // Wenn iLoop false (0) ist, dann macht die Schleife nach dem Durchgang (falls im Moment einer läuft) nicht mehr weiter.
    while(iLoop)
    {
        cout << "Geben Sie bitte eine Zahl ein (0=Quit) ";
        cin >> iLoop;

        if(!iLoop)    //Mit ! dreht man das Ergebnis um, wenn iLoop false (0) ist, dann wird true daraus, und wenn es true ist, wird false(0) daraus.
            cout << endl << "cya" << endl << endl;
        else
            cout << endl << iLoop << "+2 ist " << iLoop +2 << endl;
    }

    return 0;  
    
}



29.01.2008 21:11Profil >> Zitat >> IP gespeichert 
Keywords:C++

Simon
Online-tutorials.net Administrator

avatar

Registriert seit: 01.1970
Wohnort:Dornbirn
Beiträge:1181

Overflow, Stream
Hallo Takeru,

int hat in der Regel nur 4 Byte, du gibst ihm eine Zahl die höher ist als 4 Byte -> es gibt einen Overflow bei 2^31 -> die Zahl fängt bei - wieder an.

Der Overflow löst einen Fehler im Stream aus, der nicht bereinigt wird, das kannst du so machen:

Code:


cin.ignore(5); //Anzahl der Zeichen, die benutzt werden
cin >> iLoop; 
cin.clear();



Ich hoffe, das hilft dir.

Gruß,
Simon
-------------------

http://www.online-tutorials.net/wiki/funktionsname

Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials



30.01.2008 21:02Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:Overflow, Stream
                   nächster / vorheriger Thread

Antworten Neues Thema Top Seite 1