Terminal gibt unterschiedliche werte aus

Alles was mit C/C++ unter NetBeans zu tun hat

Moderator: wegus

Antworten
shind1609
Beiträge: 2
Registriert: 17.10.2013, 13:42

Terminal gibt unterschiedliche werte aus

Beitrag von shind1609 » 17.10.2013, 13:55

Hallo ich habe das Problem, das auf meinem Home Pc netbeans eine andere Lösung ausgibt wie auf einem hochschul Pc
Ich benutze win7 64 bit mit netbeans 7.3.1
Die Hochschulpc's laufen unter win xp auchh mit netbeans 7.3.1

Das Programm sieht folgendermaßen aus:

#include <cstdlib>
#include <iostream>

using namespace std;

int main() {

float a = 0;
int b = 0;

while ( a == b ) {
a++ ;
b++ ;
}
b-- ;
cout << b << endl;
return 0;
}

Auf meinem Home pc gibt er b als 16777217 aus
Auf den Hochschul pc's wird es als 16777216 (ist die richtige Lösung aus)

Im Debugger habe ich nachvollziehen können, dass wenn die Variable a = 16777216 ist und b = 16777217 ist, das trotzdem noch die while Schleife a == b erfüllt ist, dementsprechend versucht er beide nochmals zu inkrementieren, da die max pos ganze zahl unter float = 16777216 ist wird dieser Wert entsprechend nicht verändert, die int zahl b wird auf 16777218 erhöht und erst dann wird erkannt das a == b nichtmehr erfüllt ist.
Dies ist auf den Hochschul Rechnern nicht der Fall.
Ich hoffe ihr konntet meine Beschreibung nachvolllziehen, ansonsten würde ich mich über zwischenfragen freuen.

Bitte um Hilfe :)
MfG

Benutzeravatar
smurfi
Site Admin
Beiträge: 1623
Registriert: 29.06.2006, 11:33
Wohnort: Wuppertal
Kontaktdaten:

Re: Terminal gibt unterschiedliche werte aus

Beitrag von smurfi » 18.10.2013, 06:47

Hallo,

sind die C-Compiler auf beiden Rechner gleich?
Ist der XP-Rechner auch 64bit?

Im Moment befürchte ich das da ein Rundungsfehler zuschlägt zwischen float und int.
Gibt es einen Grund warum du einmal int und einmal float benutzt? Ist zum vergleichen eigentlich nicht so gut.
Versuch doch sonst mal vor dem vergleichen das float in ein int zu casten

Code: Alles auswählen

int result = (int)xFloat;

Gruß
Michael

shind1609
Beiträge: 2
Registriert: 17.10.2013, 13:42

Re: Terminal gibt unterschiedliche werte aus

Beitrag von shind1609 » 18.10.2013, 12:16

Hallo,
erstmal Danke für deine Antwort.

Ich hätte wohl die Aufgabe zuerst beschreiben sollen.
es ist gefordert die größte positive zahl darzustellen die in ein float passt, deshalb vergleiche ich eine int variable mit einer float

Der xp Rechner ist 32 bit.
Die compiler sind gleich.

Antworten