Multiplying long values?
java, type-conversion
Solution
In Java, all math is done in the largest data type required to handle all of the current values. So, if you have int * int, it will always do the math as an integer, but int * long is done as a long.
In this case, the 1024*1024*1024*80 is done as an Int, which overflows int.
The "L" of course forces one of the operands to be an Int-64 (long), therefore all the math is done storing the values as a Long, thus no overflow occurs.
Problem
``` class Main { public static void main (String[] args){ long value = 1024 * 1024 * 1024 * 80; System.out.println(Long.MAX_VALUE); System.out.println(value); } } ``` Output is: ``` 9223372036854775807 0 ``` It's correct if `long value = 1024 * 1024 * 1024 * 80L;`!