![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
underW |
|
||||||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 22.9.2008 Репутация: нет Всего: 3 |
Есть вот такой код:
В книжках пишут, что:
Разбирая код, видим, что постфиксный/префиксный инкремент/декремент выполняются правильно, ошибок нет. Инкремент и декремент - это операторы, соответственно
это есть выражения, но как видим, преобразования к int не происходит. Почему? Разбираем дальше: используем в выражении унарный оператор +(-)
все строки содержат ошибку, ибо происходит преобразование к типу int. Хорошо.Вопросов нет. Выражение с бинарным оператором +(-)
Ошибка, тоже самое преобразование к int.Все ясно. И последний кусок кода:
строка 1 содержит ошибку (The operator += is undefined for the argument type(s) Byte, int), строка 2 выполняется правильно. Тут вообще у меня нету логического объяснения, почему мы получаем ошибку. Прошу помощи. |
||||||||||||
|
|||||||||||||
le_chat |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 26.10.2006 Репутация: нет Всего: нет |
байт код этих операций одинаковый. следовательно при a++ преобразование к int происходит. В последнем случае используется автобоксинг. Если разложить все операции, то станет понятно почему так происходит:
|
||||
|
|||||
underW |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 22.9.2008 Репутация: нет Всего: 3 |
спасибо.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |