deprecate boolean evaluation of floating point and character types

Nick Treleaven nick at geany.org
Thu May 16 20:36:17 UTC 2024


On Thursday, 16 May 2024 at 18:03:30 UTC, Quirin Schroll wrote:
> On Wednesday, 1 May 2024 at 10:01:29 UTC, Nick Treleaven wrote:
>> But the meaning of boolean evaluation of a number is to check 
>> if it is non-zero. That is well established from C.
>
> Without looking it up, if `x` is `-0.0`, does `!x` evaluate to 
> `true` or `false`?
>
> Hint: Negative zero compares equal to zero (`x == 0.0`), but 
> it’s not zero: `x !is 0.0`.
>
> Possibly after looking it up, does the answer make sense to you?
>
> Even if you’re 100% sure, would you bet most D programmers get 
> it right?

`-0.0` would convert to integer 0, which in turn is false. When I 
said non-zero, that is well defined for integers. So I'm not sure 
why you think it's surprising that `!-0.0` is true.


More information about the dip.ideas mailing list