Wynik rzucania mnożenia dwóch dodatnich liczb całkowitych na długi jest wartością ujemną
Mam taki kod:
int a = 629339;
int b = 4096;
long res = a*b;
Wynik to-1717194752
ale jeśli dodam jeden rzut ręczny na długolong res = ((long)a)*b;
lublong res = (long) a*b;
wynik jest poprawny2577772544
Kto może wyjaśnić, jak to działa.