ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
17 апреля
645396 Топик полностью
Petrovich (13.01.2016 12:37, просмотров: 1) ответил SciFi на Чота меня переклинило про -1. Конечно, имел в виду -2147483648. Ну и всё-таки присваивать (1<<31) целому со знаком - не очень-то комильфо. Для таких дел есть беззнаковые типы.
В Java нет беззнаковых, поэтому и взял 64-бит long. А вообще стояла задача показать юнным программистам Java неявную ошибку, связанную с присвоением разнодлинных типов при распространении знака. За основу взяты наши, похожие микроконтроллерные проблемы с присвоением char n = 15; long a = (1<<n); где "а" будет не 0x8000, а 0xffff8000, и решение заключалось в (1L<<n) или ((int32_t)1<<n). И вот в Эклипсе второй вариант не проканал :(