Forum: Mikrocontroller und Digitale Elektronik ergebnis in long variable speichern


von gast (Gast)


Lesenswert?

hallo,

hab ein kleines problem.

unsigned char frequenz=1; entfernung=100;
unsigned long vergleich;

vergleich=(3600/1)*entfernung



theoretisch müsste doch in vergleich 360000 drinn stehen.
stehts aber nicht? warum?

danke

von Gast (Gast)


Lesenswert?

Was steht denn stattdessen drin?

von Klaus W. (mfgkw)


Lesenswert?

Probier doch mal:
1
vergleich=(3600ul/1)*entfernung;

von gast (Gast)


Lesenswert?

hi.

0x0000F1A0

von cast (Gast)


Lesenswert?

Lass mich raten, es steht 32320 drin.

(3600/1) ist integer, entfernug ist char

also rechnet er mit integer.

vergleich=(3600/1)*(unsigned long)entfernung

sollte gehen

von gast (Gast)


Lesenswert?

entschuldigung,
kleiner fehler.

vergleich=(3600/frequenz)*entfernung

freuenz und enfernung sind eben variabel.

von gast (Gast)


Lesenswert?

ne, es sind 61856.

kleinere werte speichert er schon richtig.

von gast (Gast)


Lesenswert?

hmmmm,

wenn frequenz und entfernung auch long sind dann gehts.

seltsam

egal, danke

von holger (Gast)


Lesenswert?

>vergleich=(3600/frequenz)*entfernung

Stell das besser um:

vergleich=(3600*entfernung)/frequenz;

von holger (Gast)


Lesenswert?

>vergleich=(3600*entfernung)/frequenz;

Noch nicht ganz richtig ;)

vergleich=(3600UL*entfernung)/frequenz;

So sollte es gehen auch wenn entfernung und frequenz
char sind.

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.