Jusqu'à aujourd'hui, je pensais que par exemple:
i += j;
Était juste un raccourci pour:
i = i + j;
Mais si nous essayons ceci:
int i = 5;
long j = 8;
Alors i = i + j;
ne compilera pas mais i += j;
compilera bien.
Cela signifie-t-il qu'il s'agit en fait d' i += j;
un raccourci pour quelque chose comme ça
i = (type of i) (i + j)
?
i+=(long)j;
même compilera bien.
i += (int) f;
jette f avant l'addition, donc ce n'est pas équivalent. (int) i += f;
jette le résultat après l'affectation, pas équivalent non plus. il n'y aurait pas de place pour placer une conversion qui signifierait que vous souhaitez convertir la valeur après l'ajout, mais avant l'affectation.