Hallo weiß jemand was genau bei einer explizieten Typenumwandlung von double nach int passiert ? double val = 10,25; int erg; erg = (int) val; normalerweise verliere ich den nachkomma Teil oder? Und ist das verhalten für negative Zahlen dasselbe ? Ich habe hier seltsamme Ergebnisse :-) Grüße Hajo
> erg = (int) val;
Damit sagst Du dem Compiler, dass er val als ein Integer Wert
interpretieren soll - wider dessen besseres Wissen.
Der Compiler liest also die Speicherstellen von val so, als ob dort ein
Integer statt dem tatsächlichen double gespeichert wäre. Das gibt
natürlich Unsinn.
Was Du (wahrscheinlich) willst, funktioniert ohne das (int): eine
Typumwandlung des double in int wird automatisch gemacht, wenn Du
schreibst:
erg = val;
Stefan
Hi also soweit ich das kenne und nutze ist eine expliziete Typenumwandlung das gleiche wie eine impliziete. Bei diversen Compilern kann man einstellen das eine impliziete Typenumwandlung als Fehler oder zumindest als Warnung ausgegeben wird. Dadurch werden Konvertierungsfehler weitgehend erkannt. Also ist erg = val; das gleiche wie erg = (int) val; nur das bei der letzten Version ganz klar ist was gemeint ist. Das Einzige was bei einer solchen Umwandlung kritisch wäre ist das laut C nicht definiert ist was bei einer Typenumwandlung von negativem double in vorzeichenlose Int passiert. Nur das habe ich nicht gemacht :-) Grüße Hajo
Sorry, vergiss mein Posting von gestern, war wohl schon etwas spät am Abend. Was sind denn genau "seltsame Ergebnisse"? Der erzeugte Code ist übrigens gleich - ob mit oder ohne (int). Viele Grüße, Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.