[D1] modulo on neg integer
nospam at nospam.com
Thu Mar 18 05:28:24 PDT 2010
> If memory serves me right, module is undefined on negative integers.
> int i = -2;
> i%=10; // i=undefined?
It's not undefined. x%y always has the sign of x, so i will be -2.
This always holds:
x == y * (x/y) + (x%y);
And since D uses truncated division, the result follows.
This behaviour is inherited from C99.
> What should I use instead to get i definitely equal to 7?
You mean 8?
i %= 10;
if (i<0) i += 10;
> On a sidenote, where can I read about operation order/definitions?
> Like i++, ++i and i%10 not changing i etc.
More information about the Digitalmars-d-learn