bearophile wrote:
A bug I've introduced once in my D code, are you able to spot it?

void main() { double x = +0; double y = -0; }


The bug: 'y' isn't the desired double -0.0

To avoid this bug DMD may keep the -0 and +0 integer literals represented in
two distinct ways, so they have two different values when/if assigned to a
floating point. (But here D will behave a little differently from C). An
alternative is to just add a warning to DMD. A third possibility is to just
ignore this probably uncommon bug :-)


This is not a bug in the language or compiler. While there is such a thing as -0.0, there is no such thing as -0 as being distinct from 0. If you want to flag mathematical no-ops as errors, what's next? a+0 is an error, too?

Reply via email to