Poul S. Sørensen wrote:
> ok, men vil det sige at når jeg f.eks. skriver:
>
> m_dwNum = 3L;
>
> så i virkeligheden står der 000003 ?
Nej.
Hvis din kompiler har 16bit int og du skriver:
long x = 0x10002;
Så vil x være 2, og ikke 0x10002
Og hvis du skriver:
int y = 0x100;
long z = y*0x1000;
Så vil z være 0.
Alt dette fordi en kompiler pr. default regner med int,
så alt til højre for = vil blive regnet som int, og
resultatet vil derefter blive lagt over i en long.
En long er altid mindst 32 bit, men en int kan være
16 bit, eller mere.
Det er det samme med:
double d = 1/2;
Her regner den 1/2 ud som int's og d vil derfor blive 0.
De fleste kompilere i vore dage har 32 bit int og
32 bit long, og så er problemet der ikke.
--
Absolutely not the best homepage on the net:
http://home20.inet.tele.dk/midgaard
But it's mine - Bertel