Problem mit CodeVision-Mathe

Gast #68728
Hallo!

Ich bin am Verzweifeln, ist ja irgendjemand in der Lage mir klar zu
machen, wieso für CodeVision diese 2 Varianten nicht gleichwertig
sind?

1) summa = (Temp_Stop-temperature)*(KP+KI);

2) summa = (Temp_Stop-temperature);
   summa = summa*(KP+KI);

bei dem ersten kriege ich 0, bei dem zweiten - was es sein soll.

summa - unsigned int; temperature - unsigned char;
Temp_Stop=100>temperature;
KP=32, KI=32;
Gast
Hi,

kann es sein, dass Temp_Stop/KP/KI Literale oder unsigned char
Konstanten sind? Dann gibt es denke ich einen Unterschied:
Bei der ersten Variante würde der Compiler dann evtl. die komplette
Rechnung mit unsigned char durchführen und somit kommt ein falsches
Ergebnis raus, da überläufe auftreten.
Bei der zweiten Variante lässt sich der erste Teil der Rechnung
unsigned char durchführen (solange 0<=temperature<=100) dann casted der
Compiler automatisch auf unsigned int. Die Zweite Rechnung führt er
dann unsigned int durch und es kommt das richtige raus.
Bei solchen Rechnungen mit Variablen unterschiedlicher Typen ist es
immer sehr wichtig richtig zu casten! Damit lassen sich viele Fehler
vermeiden.

Viele Grüße,

Ralf

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.