O resultado da multiplicação de dois inteiros positivos para longo é o valor negativo
Eu tenho código assim:
int a = 629339;
int b = 4096;
long res = a*b;
O resultado é-1717194752
mas se eu adicionar um elenco manual ao longolong res = ((long)a)*b;
oulong res = (long) a*b;
o resultado está correto2577772544
Quem pode explicar como isso funciona?