Please take a look
Lukas Pinkowski
Lukas.Pinkowski at web.de
Sat Dec 22 09:18:30 PST 2007
bearophile wrote:
> Can you
> show me an example where if shows the bug?
int main(char[][] args)
{
Uint24[4] array;
array[0] = 0xffffff;
array[1] = 0x000000;
array[2] = 0xeeeeee;
array[3] = 0xffffff;
uint a = array[0].val;
uint b = array[1].val;
uint c = array[2].val;
Stdout.formatln( "{:x}", a );
Stdout.formatln( "{:x}", b );
Stdout.formatln( "{:x}", c );
assert( a == 0x00ffffff );
assert( b == 0x00000000 );
assert( c == 0x00ffffff );
return 0;
}
Executing gives:
ffffff
ee000000
ffeeeeee
tango.core.Exception.AssertException at bug24(62): Assertion failure
As you see, taking the value of one array element will return the Uint24
value + the first byte of the next array element (shifted 24bits to the
left). (the first is correct because 0xffffff + (0x000000 << 24) is
0x00ffffff)
More information about the Digitalmars-d-learn
mailing list