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; 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.