Fino ad oggi, ho pensato che per esempio:
i += j;
Era solo una scorciatoia per:
i = i + j;
Ma se proviamo questo:
int i = 5;
long j = 8;
Quindi i = i + j;
non verrà compilato ma i += j;
verrà compilato correttamente.
Vuol dire che in realtà i += j;
è una scorciatoia per qualcosa di simile
i = (type of i) (i + j)
?
i+=(long)j;
anche compilerà bene.
i += (int) f;
lancia f prima dell'aggiunta, quindi non è equivalente. (int) i += f;
lancia il risultato dopo l'assegnazione, neanche equivalente. non ci sarebbe posto per mettere un cast che significherebbe che vuoi lanciare il valore dopo l'aggiunta, ma prima dell'assegnazione.