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.