Nested for loop issue

Marco Leise Marco.Leise at gmx.de
Sun Oct 27 08:31:18 PDT 2013


Am Sun, 27 Oct 2013 10:40:01 +0100
schrieb "Sumit Adhikari" <sumit.adhikari at gmail.com>:

> On Sunday, 27 October 2013 at 09:33:32 UTC, safety0ff wrote:
> > On Sunday, 27 October 2013 at 09:05:06 UTC, Sumit Adhikari 
> > wrote:
> >>   for (ushort i = 0 ; i < 65536 ; ++i){ // Holy King-Kong!
> >>
> >>      for (ushort j = 0 ; j < 65536 ; ++j){
> >>
> >>         status += testStimEq(i,j,cast(ushort)(i+j));
> >>
> >>      }
> >>   }
> >> What is that I am doing ?
> >
> > You have an infinite loop nested within another infinite loop, 
> > ushort cannot represent a value which is >= 65536.
> 
> Oops, missed that i & j is 16 bit!. Thanks for pointing that out
> 
> Regards, Sumit

The idea of using correctly sized types everywhere is
honorable, but I found that for loops over N iterations
better use 32-bit integers or machine word size. One issue is
that you cannot iterate over all possible ushorts with a
ushort, another is that the loop variables fit better into
CPU registers as int/uint or size_t.

So I came to think of loop variables as indexes into the
list of ushorts and indexes are size_t. :)

-- 
Marco



More information about the Digitalmars-d mailing list