-0 assigned to a FP variable

Jim bitcirkel at yahoo.com
Sun Jan 9 18:09:53 PST 2011


This is not really a bug.

I'd expect -0 to be an integer 0. Negative zero doesn't make sense for integers, and the behavior is consistent with C/C++.

A warning, like you proposed, could possibly help avoiding a mistake.



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 :-)
> 
> Bye,
> bearophile



More information about the Digitalmars-d mailing list