On Tuesday, 11 December 2012 at 12:24:14 UTC, d coder wrote:
Greetings
The following code prints FFFF0000. Similar thing happens when
a and b are
bytes.
Is this intended?
Regards
- Puneet
void main()
{
import std.stdio;
ushort a = 0x55AA;
ushort b = 0xAA55;
writefln("%X", ~(a | b));
}
integer operations are always promoted to at least int. That's
standard fare since C. I think it is a performance thing: Unpack
into ints, oeprate, repack into ints.
D's stance regarding integer operations is "if it compiles, it
creates the same output as in C".
It's kind of a gotcha, but not that big a deal.