public class Test {
public static void main(String [] s) {
int x = 99999;
long y = 99999;
long res = x * x;
System.out.println("x^2 = " + res);
res = y * y;
System.out.println("y^2 = " + res);
}
}
Output:
x^2 = 1409865409
y^2 = 9999800001
Ich bin wirklich verwirrt, um die Ausgabe aus dem obigen Code-Segment zu sehen. Ich habe erwartet, die gleiche (richtige) Antwort zu bekommen, aber hier ist x^2 eigentlich falsch!Wirklich verwirrt durch Java-Datentyp in diesem speziellen Fall
passt Sie laufen in einen Überlauf . Sobald "x" den Wert von "Integer.MAX_VALUE" erreicht hat, wird das Hinzufügen von "+ 1" zu "x" dazu führen, dass "x" zu "Integer.MIN_VALUE" wird. – SomeJavaGuy
Check out http://stackoverflow.com/questions/1494862/multiplying-long-values – guiguiblitz
Im ersten Fall multipliziert man zwei Ints und dann zu lange gegossen, in der zweiten multipliziert zwei lange –