Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Polynomial Root Finder Java [duplicate]

Tags:

java

I was trying to check different inputs and creating infinite loops in java and I found that once the int is getting incremented over the maximum limit it turns in to negative -2147482958. I am just increasing the int in infinite loop...

Code:

public static void infiniteLoop(){
        for(int i=0;i>-1;i++){
            i = i + 1000;
            System.out.println(i);
        }
    }

The last to value gets printed out is,

2147483337
-2147482958

Now, Why does it goes to negative?

like image 654
TeaCupApp Avatar asked Feb 23 '26 10:02

TeaCupApp


1 Answers

Why does it goes to negative?

Because that is what is specified to happen in Java when an int calculation overflows.

JLS 15.18.2

"If an integer addition overflows, then the result is the low-order bits of the mathematical sum as represented in some sufficiently large two's-complement format. If overflow occurs, then the sign of the result is not the same as the sign of the mathematical sum of the two operand values."


(This doesn't explicitly say that overflow always gives a negative number. And it doesn't always. But if you apply the rule, it does explain why incrementing Integer.MAX_VALUE by +1 gives you Integer.MIN_VALUE ...)

like image 142
Stephen C Avatar answered Feb 24 '26 23:02

Stephen C



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!