Forum: Mikrocontroller und Digitale Elektronik invalid operands to binary >> (have "float" and "int")


von Attila C. (attila)


Lesenswert?

Hallo

habe die Fehlermeldung aus der Überschift bei folgender Konstruktion:

  float temp=0;
        int both=0;
  int upper=0;
  int lower=0;


    upper=I2Creceive(0x04);
    lower=I2Creceive(0x05);
    upper=upper<<8;
    both=upper|lower;
    temp=(float)both;
    temp>>4;

Ich blicks nicht. Was muss ich tun?

Danke!

von Carl D. (jcw2)


Lesenswert?

temp /= 16;
schreiben hilft. Float ist nicht per Shift teilbar!

Oder auch:
temp=(float)(both>>4);

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

>temp=(float)both;

der cast könnte das Problem sein, er ist zumindest nicht notwendig

in welcher Zeile kommt der Fehler?

von Attila C. (attila)


Lesenswert?

Danke!

von Wolfgang (Gast)


Lesenswert?

Carl D. schrieb:
> temp /= 16;
> schreiben hilft. Float ist nicht per Shift teilbar!

Wo du recht hast, hast du recht. Für eine Division durch 16 reicht es 
bei Float, den Exponenten um 4 zu verringern.

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.