August 20, 2005 Implicit conversion of int to uint | ||||
---|---|---|---|---|
| ||||
I just tripped over a nasty 'feature' of D.
The two lines below compiled okay!
void foo(uint A) { ... }
foo(-1);
The -1 was implicitly converted to 4294967295. WTF!
Is there any good reason why a signed value should be implicitly converted to an unsigned value?
--
Derek Parnell
Melbourne, Australia
21/08/2005 9:43:30 AM
|
August 21, 2005 Re: Implicit conversion of int to uint | ||||
---|---|---|---|---|
| ||||
Posted in reply to Derek Parnell | In article <1vs47npbgypcu.1m42hzm9045ba.dlg@40tude.net>, Derek Parnell says... > >I just tripped over a nasty 'feature' of D. > >The two lines below compiled okay! > > void foo(uint A) { ... } > foo(-1); > >The -1 was implicitly converted to 4294967295. WTF! > >Is there any good reason why a signed value should be implicitly converted to an unsigned value? I don't see one either. It should give a warning at least. Uint/int conversion can result in data problems, as seen above. I thought that sort of thing was being avoided in D with implicit conversions? I say require a cast to force conversion. --AJG. |
Copyright © 1999-2021 by the D Language Foundation