Code:
inline DWORD sub(WORD w1, WORD w2)
{
return w1 - w2;
}
sub(0,1) mi vraća 0xFFFFFFFF, dok ja želim da mi vrati 0x0000FFFF.
Želim da procesor oduzme unsigned WORD - unsigned WORD i dobije unsigned WORD.
0000 - 0001 = FFFF
Zatim da ga zero-extendira na unsigned DWORD
0000FFFF
Kao što rekoh, ovo radi
return (WORD) (word1 - word2);
možda bi bilo pravilnije da piše ovako (i ovo isto radi)
return (DWORD) ((WORD) (word1 - word2));
Koliko se sećam, pročitao sam negde da kompajler ne oduzima WORD - WORD,
nego prvo oba worda konvertuje u dword... tako nešto, nisam siguran.
Kako se zovu takva pravila na engleskom? (da mogu da googlam)