unsigned interger overflow
Jonathan M Davis
jmdavisProg at gmx.com
Tue Oct 1 22:41:34 PDT 2013
On Wednesday, October 02, 2013 12:32:24 Alexandr Druzhinin wrote:
> Is it safe to replace code:
>
> uint index;
> // do something
> index++;
> if(index == index.max)
> index = index.init;
>
> by the following code
> uint index;
> // do something
> index++; /// I use unsigned int so uint.max changed to 0 automagically
Well, not quite. Your first one skips uint.max. It goes from uint.max - 1 to 0,
whereas the second one goes from uint.max to 0. So, they're subtly different.
But yes, incrementing the maximum value of an unsigned integral type is
guaranteed to wrap around to 0. Signed integers are of course another matter
entirely, but it's guaranteed to work with unsigned integers.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list