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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage