double to int
-
ja hab ich gelesen
aber ich hab bei der ausgabe nicht versehentlich ein "<< hex" mit rein geschrieben
die ganzen zahlen kommen alle aus einer hex zahl, die habe ich aber schon soweit aufgelöst, dass ich nun jede einzelne ziffer in einem int habe.
wenn ich diese ausgebe, stehen auch exakt die richtigen werte in der ausgabe.
nun versuche ich ja nur mit diesen int werten weiter zu rechnen.
das double kommt lediglich von der funktion "pow".
-
Gut, gibt nur noch eins. Zeige ein Minimalbeispiel, welches den Fehler reproduziert.
Grüssli
-
Gib dem double doch mal den Wert 10 und schau mal, was dann für eine Ausgabe kommt. Zufällig 'A'?
-
wenn ich in ein double eine 10 packe kommt eine 10 wenn ich sie als int ausgebe.
leider passiert das selbe auch wenn ich dort eine 16 reinpacke
-
goody schrieb:
wenn ich in ein double eine 10 packe kommt eine 10 wenn ich sie als int ausgebe.
leider passiert das selbe auch wenn ich dort eine 16 reinpackeIch sage einfach mal: Glaube ich nicht.
-
goody schrieb:
wenn ich in ein double eine 10 packe kommt eine 10 wenn ich sie als int ausgebe.
leider passiert das selbe auch wenn ich dort eine 16 reinpackeDann mal her mit einem compilierbaren Minimalbeispiel. Ich vermute auch mal, dass du beim erstellen dieses minimalen Programms deinen Fehler schon finden wirst: Entferne einfach nach und nach unnötige Sachen. Wenn es hinterher immer noch nicht läuft, dann postest du das Programm hier. Wenn es nach Entfernen einer Sache plötzlich läuft, hast du die Ursache gefunden.
-
ich glaubs ja auch nicht.
ich sitz momentan noch in der uni, deswegen kommt das minimalbeispiel erst nachher.
ich wed dann auch mal ausprobieren stück für stück alles auszukommentieren.danke trotzdem schonmal für alle eure antworten
-
also, ich hab das problem gefunden bzw. lokalisiert, denn verstanden hab ich es nicht

if(anzeige) { cout << "Verbindunsbestaetigung gesendet: "; cout << hex << static_cast<int>(antwort); }wenn ich diese ausgabe auskommentiert habe, hat wieder alles prima funktioniert. lediglich wenn das cout mit dem hex im code gestanden hat, habe ich nur noch 10er potenzen bekommen.
ich habe aus der zweiten ausgabe nun ein
printf("%#02x\n",static_cast<int>(antwort));gemacht. so funktioniert auch alles prima.
habt ihr eine idee wie diese ausgabe solch einen effekt hervorrufen kann?
-
goody schrieb:
habt ihr eine idee wie diese ausgabe solch einen effekt hervorrufen kann?
Ich kann dich gern ein zweites Mal auf krümelkackers Post hinweisen...
-
Nexus schrieb:
goody schrieb:
habt ihr eine idee wie diese ausgabe solch einen effekt hervorrufen kann?
Ich kann dich gern ein zweites Mal auf krümelkackers Post hinweisen...
moment, nicht falsch verstehen.
wenn diese ausgabe im code stand wurden auch alle anderen zahlen so ausgeben.
dass die var "antwort" als hex ausgegeben wird war gewollt.ich hätte jetzt aber auch folgendes drunter schreiben können und es wäre genauso ausgegeben worden, auch ohne das "hex"
double x = 16.0; int y = x; cout << y;und dieser teil hat ja nun nichts mit dem obigen zu tun...
-
Der Manipulator
std::hexverändert das globalestd::cout-Objekt, hat also auch Einfluss auf spätere Ausgaben über diesen Stream. Schliesslich erkennt der Stream den Ausdruckstd::cout << std::hex << 15;nicht als elementare Ausgabe, nach der allfällige Manipulatoren zurückgesetzt werden.
-
ok gut zu wissen, dass dadurch das globale cout verändert wird.
danke für die info
-
Das globale cout? Es gibt nur ein cout, und das wird verändert. ò.ó
-
Da sieht man mal wieder die Gefahr globaler Variablen
.
-
ich wusste halt einfach nicht, dass ich mit diesem schnipsel was verändern kann. ich dachte das wäre wie beim printf einfach nur eine ausgabeoption, welche sich nur auf die aktuelle anweisung bezieht
