Столкнулся с таким вот свойством сложения. У нас есть две переменные:
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
Комментариев нет:
Отправить комментарий