Forum: Compiler & IDEs mspgcc, long long Vergleich


von Jan Wagner (Gast)


Lesenswert?

Hi,

was eigenartiges:

#define SCAN_LIM_HI  (unsigned long long)0x466666660000

volatile unsigned long long dds_lo_tw;

void ebbes(void) {
  if(dds_lo_tw>SCAN_LIM_HI) pcWriteChar('#');
}

Komischerweise ist das 'if' hier immer true, egal ob dds_lo_tw kleiner 
oder grösser als SCAN_LIM_HI ist. Gleiches Ergebnis mit 
if(dds_lo_tw<SCAN_LIM_LO) und #define SCAN_LIM_LO (unsigned long 
long)0x08637BD0.

Laut
 http://mspgcc.sourceforge.net/doc_memapi.html
ist long long unterstützt und 8 bytes lang.

Ist das dann ein Fehler in mspgcc dass der Vergleich nicht richtig 
funzt?

danke,

 - jfw

von Joerg Wunsch (Gast)


Lesenswert?

Der typecast auf eine Konstante, die bereits zu kurz ist, ist
witzlos.  Hänge stattdessen ein LL (oder ULL) an die Konstante
an.

Bekommst Du denn dafür keine Compilerwarnung?  Würde mich wundern.
Oder hast Du kein -W -Wall in der Kommandozeile?

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.