On Thursday, 11 October 2018 at 14:35:34 UTC, James Japherson wrote:
Took me about an hour to track this one down!

A + (B == 0) ? 0 : C;

D is evaluating it as

(A + (B == 0)) ? 0 : C;

As it should.



The whole point of the parenthesis was to associate.

I usually explicitly associate precisely because of this!

A + ((B == 0) ? 0 : C);

In the ternary operator it should treat parenthesis directly to the left as the argument.

Of course, I doubt this will get fixed but it should be noted so other don't step in the same poo.

No. Except for assignement and assignment operators, ternary operator has the lowest precedence of any operator in D (and C, C++, java, PHP, C# etc.).


Reply via email to