Automatischer Cast

Gast #1229399
Wie ist der C Standard? Wird ein automaticher Cast gemacht, wenn das 
Ergebnis von r und v größer 16 Bit ist? Auf den meisten Compiler läuft 
dieser Code aber jetzt habe ich einen Compiler auf dem es nicht läuft, 
bei dem muss ich r und v erst explizit auf U32 casten. Ich hatte nämlich 
angenommen, das dies der Compiler implizit selber machen würde.

U32 Sum;
U16 r;
U16 v;


Sum = (U16)~r + v;
Gast wrote:
> Wie ist der C Standard? Wird ein automaticher Cast gemacht, wenn das
> Ergebnis von r und v größer 16 Bit ist?

Nein.
Der Datentyp eines Ergebnisses hängt ausschliesslich von den Datentypen 
der beteiligten Operanden ab.

Deine Operanden im Ausdruck

  (U16)~r + v

sind alle U16, also hat auch das Ergebnis erst mal den Datentyp U16 und 
die Operation wird im Zahlenraum U16 gemacht. Wenn die Operation dabei 
überläuft: Pech gehabt.

Erst dann, wenn das Ergebnis des Ausdrucks feststeht, wird die Zuweisung 
betrachtet: Links steht ein U32, rechts ein U16, also wird das Ergebnis, 
nachdem es berechnet wurde, auf U32 gebracht und zugewiesen.
Gast
>Auf den meisten Compiler läuft dieser Code

Auf den allermeinsten Compilern läuft gar kein Code, sondern nur auf den 
dazugehörigen Zielprozessoren.

Auf welchen Compiler-/Prozessorkombinationen "läuft" denn dein Beispiel?

Oliver
Gast
@Karl heinz Buchegger
Danke, hatte eben etwas anderes im Kopf und deswegen auf dem Schlauch 
gestanden. So wie du es sagst ist es richtig und auch logisch.

@Oliver
Klugscheisser ;-)-

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.