Bug in the array set operator

Chris Miller chris at dprogramming.com
Thu Jun 22 19:43:19 PDT 2006


On Thu, 22 Jun 2006 21:39:40 -0400, roumen <roumen_member at pathlink.com>  
wrote:

> I'm fairly certain that the code below should not work, but it compiles  
> and
> works OK. And if I use the "correct" statement a[0..a.length-1] = 0; it  
> does not
> set the last element.
>
> import std.stdio;
> private int[5] a = [1, 2, 3, 4, 5];
> void main(char[][] arg)
> {
> foreach (int n; a)
> writef("%d ", n);
> writefln();
>
> a[0..a.length] = 0;   // BUG: should be a.length-1
>
> foreach (int n; a)
> writef("%d ", n);
> writefln();
> }
>
>

It's [inclusive..exclusive], so [0..length] is the whole array and [0..0]  
is empty.



More information about the Digitalmars-d mailing list