April 16, 2007
Hello,

when playing with an array and indices that are later shifted to < 0,
I found the following rather not intuitive behaviour:

import std.stdio;
void main()
{
	uint j;
	writefln(j - 2);
}

results in 4294967294.
I'm aware of the construction of uint,
but shouldn't j be automatically converted
to a larger type providing negative numbers (long) ?

david
April 16, 2007
david wrote:

> Hello,
> 
> when playing with an array and indices that are later shifted to < 0, I found the following rather not intuitive behaviour:
> 
> import std.stdio;
> void main()
> {
> uint j;
> writefln(j - 2);
> }
> 
> results in 4294967294.
> I'm aware of the construction of uint,
> but shouldn't j be automatically converted
> to a larger type providing negative numbers (long) ?
> 
> david

Why should it, that would cause even more confusion. In my opinion it should either be illegal (and caught at compile time) or stay as is.