Страницы

Поиск по вопросам

понедельник, 25 ноября 2019 г.

(x = x + y) или (x += y) — отличия в приведении типов


Столкнулся с таким вот свойством сложения. У нас есть две переменные:

int x = 1;
long y = 2;


y нужно прибавить к x. Если мы воспользуемся простым сложением, то IDE откажетс
компилировать:

x = x + y;    //Incopatible types


Если же мы пользуемся следующей конструкцией:

x += y;


то код обрабатывается корректно.

Ошибка понятна — мы пытаемся запихнуть long в int, IDE видит потенциальную ошибку и не даёт скомпилировать. Но почему проходит во втором случае?
    


Ответы

Ответ 1



var1 op= var2 равносильно var1 = (T)((var1) op (var2)), где op - оператор. Пример: int x = 2; double y = 4.6; Данная строка x += y; равносильна нижней: x = (int)(x + y); Документация: 15.26.2. Compound Assignment Operators

Комментариев нет:

Отправить комментарий