Всем привет! Подскажите пожалуйста, какие из строк кода приведут к ошибке компиляции по причине неправильного приведения типов? Вроде тему понял, но все верные ответы не могу отметить...
int i = 3; byte b = 1; byte b1 = 1 + 2; // line 1 short s = 304111; // line 2 short s1 = (short) 304111; // line 3 b = b1 + 1; // line 4 b = (byte) (b1 + 1); // line 5 b = -b; // line 6 b = (byte) -b; // line 7 b1 *= 2; // line 8 b = i; // line 9 b = (byte) i; b += i++; float f = 1.1f; b /= f;
Разобрался. Это потому что byte стоит ниже int и все действия с ним превратят переменную в int. Фуххх... Я не знаю кто Вы, но сколько учусь, часто вижу Ваши ответы, которые не раз выручали!
Оракул
Оракул
(62095)
Иван, почти, но не совсем так. Ошибка, потому что все арифметические операции + - * / по умолчанию приводят результат к int, даже если складывать два byte или short. Поэтому результат без каста записать в byte нельзя
int i = 3;
byte b = 1;
byte b1 = 1 + 2; // line 1
short s = 304111; // line 2
short s1 = (short) 304111; // line 3
b = b1 + 1; // line 4
b = (byte) (b1 + 1); // line 5
b = -b; // line 6
b = (byte) -b; // line 7
b1 *= 2; // line 8
b = i; // line 9
b = (byte) i;
b += i++;
float f = 1.1f;
b /= f;