implicit ubyte casting
Stewart Gordon
smjg_1998 at yahoo.com
Fri Oct 2 14:53:54 PDT 2009
Moritz Warning wrote:
<snip>
> ubyte z = 5;
> int x = -z; // x now is 251
> int y = -1 * z; // y is now -5
Indeed, I've just looked at the spec, and it appears that the promotion
of all smaller integer types to int/uint applies only to binary
operations. Why?
It even arguably breaks the "looks like C, acts like C" principle (which
I thought was the reason behind these promotions in D):
----------
#include <stdio.h>
int main() {
unsigned char z = 5;
int x = -z; // x now is 251
int y = -1 * z; // y is now -5
printf("%d %d %d\n", z, x, y);
return 0;
}
----------
5 -5 -5
----------
(DMC 8.42n Win)
Stewart.
More information about the Digitalmars-d-learn
mailing list