Das Ergebnis der Multiplikation von zwei positiven ganzen Zahlen zu lang ist ein negativer Wert
Ich habe folgenden Code:
int a = 629339;
int b = 4096;
long res = a*b;
Das Ergebnis ist-1717194752
aber wenn ich eine manuelle Besetzung zu lang hinzufügelong res = ((long)a)*b;
oderlong res = (long) a*b;
Das Ergebnis ist richtig2577772544
Wer kann erklären, wie es funktioniert.