On 2/5/18 6:09 PM, Adam D. Ruppe wrote:
On Monday, 5 February 2018 at 22:52:41 UTC, Steven Schveighoffer wrote:
But I can't see why there is controversy over negation of byte turning into an int. I can't see why anyone would expect:

int x = -b;

when b is -128, to set x to -128. The integer promotion makes complete sense to me.

Do you feel the same way about

float x = 1/2;

?

Not really. But it is a good counter-argument.

In a way, it's the fact that it's a corner case which makes this more sinister. For all bytes *except* byte.min, the behavior is the same regardless of whether integer promotion is used or not. So when this bug actually occurs, it's going to be in code that "worked for years". And in some cases was ported from C and worked there.

But for integer division and assignment to float, it's quite obvious that it doesn't work with almost all combinations.

-Steve

Reply via email to