March 31, 2004
Hello.
Please allow my awkward English.
I'm trying D.
So, I encountered a problem of uint operation.

uint x = 2147483648; //0x80000000
uint y = 0;

stdout.writeLine("2147483648 + 0 = " ~ .toString(x + y));
stdout.writeLine("size = " ~ .toString((x + y).sizeof));
stdout.writeLine("min  = " ~ .toString((x + y).min));
stdout.writeLine("max  = " ~ .toString((x + y).max));

Results..
2147483648 + 0 = -2147483648    <- WHY?
size = 4
min  = -2147483648
max  = 2147483647

I hope the result type to be uint from the oparation "uint + uint".
But above example shows that uint + uint = int!
I think that this work is maybe wrong.

My environment is Windows Me, dmd 0.82
Thanks!

--
Naoto Ikegaya <jacky3@mve.biglobe.ne.jp>
March 31, 2004
Naoto Ikegaya wrote:

> Hello.
> Please allow my awkward English.
> I'm trying D.
> So, I encountered a problem of uint operation.
> 
> uint x = 2147483648; //0x80000000
> uint y = 0;
> 
> stdout.writeLine("2147483648 + 0 = " ~ .toString(x + y));
> stdout.writeLine("size = " ~ .toString((x + y).sizeof));
> stdout.writeLine("min  = " ~ .toString((x + y).min));
> stdout.writeLine("max  = " ~ .toString((x + y).max));
> 
> Results..
> 2147483648 + 0 = -2147483648    <- WHY?
> size = 4
> min  = -2147483648
> max  = 2147483647
> 
> I hope the result type to be uint from the oparation "uint + uint".
> But above example shows that uint + uint = int!
> I think that this work is maybe wrong.
> 
> My environment is Windows Me, dmd 0.82
> Thanks!

Adding an explicit cast seems to help. I don't know why your example doesn't work. It could be a compiler bug.

import std.stream;

void main()
{	
  uint x = 2147483648; //0x80000000
  uint y = 0;

  stdout.writeLine("2147483648 + 0 = " ~ .toString(cast(uint) (x + y)));
  stdout.writeLine("size = " ~ .toString((x + y).sizeof));
  stdout.writeLine("min  = " ~ .toString((x + y).min));
  stdout.writeLine("max  = " ~ .toString((x + y).max));
}

Output:

2147483648 + 0 = 2147483648
size = 4
min  = -2147483648
max  = 2147483647

> --
> Naoto Ikegaya <jacky3@mve.biglobe.ne.jp>


-- 
Justin
http://jcc_7.tripod.com/d/