On Tue, 11 Jun 2013 12:18:52 -0400, Adam D. Ruppe
<destructiona...@gmail.com> wrote:
On Tuesday, 11 June 2013 at 16:05:30 UTC, Steven Schveighoffer wrote:
CPU performs math at int level.
eh, I wouldn't blame the hardware. You can do
asm {
mov AL, 10;
add AL, 5;
}
and it is allowed, it also don't spill into AH if you overflow it (it
just sets the carry flag). I'm sure it is different on different
processors, but x86 is pretty flexible.
Well, that is not what I knew, so good lesson :)
But I'd be surprised if the above was less costly than a full word
addition. I think that is the point of C's policy of integer promotion,
which D adopts for the most part (although C allows it to go back into
whatever).
ubyte c = k;
c += 1; // ok
This I find extremely inconsistent...
I'd be extremely annoyed if that required a cast. It's bleeding obvious
that you want it to assign back there....
I argue the consistency is both ways :) I don't want to require a cast
there (and in reality, where would the cast go?), but it seems that if you
are doing math among bytes, or a byte and an integer that can fit into a
byte, it should be quite obvious that you are working in the byte land.
The fact that
k += 1;
and
k = k + 1;
are treated differently is annoying.
-Steve