mspgcc, long long Vergleich

Gast #40004
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
Gast #40005
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren