Expliziete Typenumwandlung

Gast #365156
Lesenswert?
• ▲
▼
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
#365157
Lesenswert?
• ▲
▼
> 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
Gast #365158
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren