#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.
Комментариев нет:
Отправить комментарий