Do dzisiaj myślałem, że na przykład:
i += j;
Był tylko skrótem do:
i = i + j;
Ale jeśli spróbujemy:
int i = 5;
long j = 8;
Wtedy i = i + j;
nie będzie kompilować, ale i += j;
skompiluje dobrze.
Czy to oznacza, że tak naprawdę i += j;
jest skrót do czegoś takiego
i = (type of i) (i + j)
?
i+=(long)j;
nawet skompiluje się dobrze.
i += (int) f;
rzuca f przed dodaniem, więc nie jest równoważne. (int) i += f;
rzutuje wynik po przypisaniu, również nie równoważny. nie byłoby miejsca na rzutowanie, które oznaczałoby, że chcesz rzutować wartość po dodaniu, ale przed przypisaniem.