#java #операторы
This question already has answers here:
Сложение 2 чисел типа short в Java
(2 ответа)
Закрыт 12 месяцев назад.
Имеется тестовый кусок кода.
public class Test {
public static void main(String[] args) {
int i = 2;
char c = '1';
c = (char) c * i; //ошибка компиляции
System.out.println(c);
}
}
Но
...
c *= i; //выводит b
...
Почему?
Ответы
Ответ 1
Если посмотреть в спецификацию то можно увидеть что E1 op= E2 эквивалентно E1 = (T) ((E1) op (E2)) где T это тип E1. Поэтому c *= i; из вашего примера эквивалентно c = (char)(c * i); В случае c = (char)c * i; проблема в том что оно парсится как c = ((char)c) * i; и когда мы умножаем ((char)c) на i результат расширяется до int.
Комментариев нет:
Отправить комментарий