D - Problem with operation of uint
- Naoto Ikegaya (22/22) Mar 31 2004 Hello.
- J C Calvarese (21/48) Mar 31 2004 Adding an explicit cast seems to help. I don't know why your example
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>
Mar 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/
Mar 31 2004