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


von Dieter B. (ditt)


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

von Jim M. (turboj)


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.

von Dieter B. (ditt)


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

von Dirk B. (dirkb2)


Lesenswert?

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

von Carl D. (jcw2)


Lesenswert?

Ein Compiler würde eine Warnung ausgeben.

von Paul B. (paul_baumann)


Angehängte Dateien:

Lesenswert?

Carl D. schrieb:
> Ein Compiler würde eine Warnung ausgeben.

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

MfG Paul

von Wolfgang (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Paul B. (paul_baumann)


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
von Wolfgang (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.