-0 assigned to a FP variable
Olivier Pisano
olivier.pisano at laposte.net
Mon Jan 10 05:14:14 PST 2011
Le 10/01/2011 01:27, bearophile a écrit :
> 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 :-)
>
> Bye,
> bearophile
Hi,
Do you suggest the compiler should guess you want -0.0 and convert 0 to
double before applying the unary minus operator ?
I suppose such a fix would be likely to create many more bugs than the
one it is suppose to solve.
I don't have a clue on what kind of user code needs to differentiate 0.0
and -0.0 fp litterals, but I humbly suppose that it must be kind of rare.
More information about the Digitalmars-d
mailing list