mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Rechnen mit negativem Ergebnis in Bascom


Autor: Dieter B. (ditt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Helfer,

ich rechne mit Long-Variablen, da ich sehr grosse Zahlen verwende.
Probleme gibt es sobald ein Wert negativ wird.
Beispiel mit kleinen Werten:
9900 - 10000 sollte -100 ergeben
Angezeigt wird 4294967196
Was mache ich falsch?

Vielen Dank für eure Hilfe.
Ditt

Autor: Jim M. (turboj)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Du hast Dein Programm nicht gepostet.

Für einen unsigned long ist der Wert korrekt, und den Print Funktionen 
muss man i.d.R. mitteilen ob ein Wert mit oder ohne Vorzeichen zu 
Behandeln ist.

Autor: Dieter B. (ditt)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Vielen Dank für die Antwort.

Mein Testprogramm:

Dim Test1 As Long
Dim Test2 As Long
Dim Test3 As Dword


   Test1 = 9900
   Test2 = 10000

   Test3 = Test1 - Test2

   Locate 1 , 1
   Lcd Test3

Das Problem war die Variable Test3 als Dword.
Nach Änderung auch zu Long wurde der richtige
Wert -100 angezeigt. Man sollte wohl bei
arithmetischen Rechnung immer die gleichen Definitionen
verwenden.

Nochmals vielen Dank
Ditt

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DWord ist ein unsigned Typ.
Wie soll der negative Werte aufnehmen können?

Autor: Carl D. (jcw2)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ein Compiler würde eine Warnung ausgeben.

Autor: Paul B. (paul_baumann)
Datum:
Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Carl D. schrieb:
> Ein Compiler würde eine Warnung ausgeben.

Nein, würde ein Kompiler nicht tun. Siehe Bild

MfG Paul

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieter B. schrieb:
> Man sollte wohl bei arithmetischen Rechnung immer die gleichen
> Definitionen verwenden.

Nein, das ist nicht das Problem. Wenn als Ergebnis der Operation 
negative Zahlen auftreten können, muss sowohl die Funktion negative 
Zahlen zurückgeben können, als auch die Ergebnisvariable negative Zahlen 
aufnehmen können.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Paul B. schrieb:
> Nein, würde ein Kompiler nicht tun. Siehe Bild

Carl bezieht sich auf die eher als "einfach strukturiert" zu 
bezeichnende Qualität des Bascom-Compilers.

Autor: Paul B. (paul_baumann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Carl bezieht sich auf die eher als "einfach strukturiert" zu
> bezeichnende Qualität des Bascom-Compilers.

Ach so meint ihr das, ihr Schlingel.
:)

Trotzdem ist mir das lieber, als mit blödsinnigen Fehlermeldungen 
zugeschüttet zu werden, die mit dem Fehler nicht das Geringste zu tun 
haben.
Man kann m.E.n. von den Leuten verlangen, daß sie sehen, ob ein Ergebnis 
"zu dick" für den gewählten Datentyp wird und überquillt.

MfG Paul

: Bearbeitet durch User
Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Paul B. schrieb:
> Trotzdem ist mir das lieber, als mit blödsinnigen Fehlermeldungen
> zugeschüttet zu werden, die mit dem Fehler nicht das Geringste zu tun
> haben.

Du sprichst von C?
Da ist oft nur die erste Fehlermeldung interessant. Der Rest ist meist 
nur das Produkt der Verzweifelungstat des Compilers, dem nachfolgenden, 
jetzt mehr oder weniger sinnlosen Code, doch noch irgendeine Bedeutung 
abzugewinnen, was dann kläglich scheitert und in seitenfüllenden 
Fehlerlisten mündet.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.