overflow bei miltiplikation

OP #1206638
hallo
kann mir bitte jemand dieses verhalten erklären:
-------

uint32_t var_1;
var_1 = (9999 * 10);

fehlermeldung: ../programm.c:437: warning: integer overflow in 
expression
--------

uint32_t var_1;
var_1 = 99990;

keine fehlermeldung.

--------------

compiler: WinAVR-20081205

gruss
Rolf Riller wrote:
> kann mir bitte jemand dieses verhalten erklären:
> -------
>
> uint32_t var_1;
> var_1 = (9999 * 10);
>
> fehlermeldung: ../programm.c:437: warning: integer overflow in
> expression
Ja, das ist ein beliebter Anfängerfehler. Solche Operationen werden, so 
lange alle beteiligten Werte in einen int reinpassen, auch in int 
gerechnet. Dass das Ergebnis nicht in einen int passt, interessiert 
den Compiler nicht. Wenn der Programmierer weiß, dass das Ergebnis nicht 
in einen int passt, dann muss er dafür sorgen, dass zumindest einer 
der beiden Operanden vor der Operation in einen ausreichend großen 
Datentyp konvertiert wird.

> uint32_t var_1;
> var_1 = 99990;
>
> keine fehlermeldung.
Oh Wunder... 99990 passt ja auch nicht in einen int. Und es wird auch 
nix grechnet...
Gast
Der Compiler sieht 9999 und denkt an INT16, er sieht 10 und
denkt INT16. Er Multipliziert und sieht Overflow.
Da het er recht.
Cast mal die 9999 auf uint32_t und der Compiler sieht was du willst.

gruß hans

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.