Signed-unsigned comparisons in Phobos
Jonathan M Davis
jmdavisProg at gmx.com
Fri Aug 12 08:52:11 PDT 2011
On Friday, August 12, 2011 12:39:01 Don wrote:
> kennytm wrote:
> > Don <nospam at nospam.com> wrote:
> >> I've had a look at a dozen or so of these, and they were all real. I
> >> didn't see any which require a cast to "make the compiler shut up".
> >> That's pretty impressive. In C++ I find that such messages are nearly
> >> always false positives.
> >>
> >> The one case where it's a bit annoying is this:
> >>
> >> int [] x = new int[6]; // or x = some array literal.
> >> for (int i = 0; i < x.length; ++i) {...}
> >>
> >> Here is a suggestion for how we could eliminate such false positives.
> >> http://d.puremagic.com/issues/show_bug.cgi?id=6478
> >
> > Doesn't this require flow analysis?
>
> Yes. See the bug report.
>
> > And the type of index 'i' should be 'size_t' anyway.
>
> Why? It will only ever be in the range 0..6.
Sure. it works in this case, but in the general case it's good practice to use
size_t for indices, because that's the actual type of the index, so it won't
have signedness or range problems. Unfortunately, it's a practice that many
people don't seem to follow (in both C/C++ and D), since it's so natural to
use int (or auto in D), but I'd definitely argue that programmers should
normally be using size_t for indices.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list