ViktorMedlem sedan aug. 20021 752 inlägg Hej hopp, här kommer en fråga :)
Jag skulle vilja dela på en 32 bits integer så att jag kan sätta de 16 övre till ett tal och sedan de 16 undre till ett annat tal och sedan kunna läsa av dessa tal på något lätt och smidigt sätt, någon som vet hur jag ska göra? Jag "tror" att jag måste skifta (>> eller <<) men jag vet inte hur jag ska göra det.
/Viktor
Marcus EMedlem sedan maj 20021 466 inlägg Använder du Windows finns det två makron för detta i windef.h:
#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff))
#define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
ViktorMedlem sedan aug. 20021 752 inlägg Använder inte Widows, är det bara att kopiera in dessa macros ändå?
/Viktor
BeatboxMedlem sedan okt. 20013 217 inlägg I praktiken så är det ju en skiftning...
ViktorMedlem sedan aug. 20021 752 inlägg
Beatbox skrev:
I praktiken så är det ju en skiftning...
Visst är det det men det gäller för en nybörjare att bli skickad i rätt riktning :)
Såhär blev det tillslut :)
#define LOWORD(I) (I & 0xFFFF)
#define HIWORD(I) (I >> 16)
#define MAKELONG(a, b) ((a & 0xFFFF) | ((b & 0xFFFF) << 16))
int i(MAKELONG(18,16));
cout << LOWORD(i) << endl << HIWORD(i) << endl;
bara omskrivningar av Windef funktionerna.
Tack för hjälpen :)
/Viktor
Om du nu ska använda makron (vilket du absolut inte ska) du skriv iallafall så här:
#define LOWORD(I) ((I) & 0xFFFF)
#define HIWORD(I) ((I) >> 16)
Fast gör så här i stället: (bättre på alla sätt)
inline int loword(int i)
{
return i bitand 0xffff;
}
inline int hiword(int i)
{
return i >> 16;
}
ViktorMedlem sedan aug. 20021 752 inlägg Då kommer en följd fråga :)
I vilken klass ska jag lägga dem? De behövs av flera delar (klasser) i programmet.
Nu har jag lagt macron i en include fil som inkluderas av alla delar av programmet.
Är det "ok" att ha samma funktion på flera ställen i progammet?
/Viktor
Viktor skrev:
Är det "ok" att ha samma funktion på flera ställen i progammet?
Ja, om den är markerad som "inline".