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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.