+=
, &=
, и другие. Их правильное название – операторы сложного присваивания (compound assignment). Сокращенные версии есть для всех арифметических и битовых операторов.У таких сокращений есть одно неочевидное отличие от полных версий. Если прочитать спецификацию, там сказано, что
x += y
– это на самом деле сокращение от x = (XType)(x + y)
. То есть, кроме самой операции происходит приведение результата к типу левого операнда. Незнание этой особенности может привести к ошибочно успешной компиляции, и неожиданным результатам работы кода (как в примере на изображении).