ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
154245 Топик полностью
Сергей Борщ (20.04.2009 09:06, просмотров: 205) ответил picavr на Спасибо за подсказку... изменил как вы сказали, но компилируется так же.
Сдвигаемая единица имеет тип int. Т.е. для IAR AVR - 16 бит со знаком. Именно она меняет знак при сдвиге на 15. А при сдвиге на большее число вообще превращается в ноль (это вторая ругань). В таких случаях надо явно указывать, что она имеет тип unsigned или long unsigned long long: ((unsigned long)1<<15), (1UL<<15), (1ULL<<15). Приведение типа к типу результата происходит перед присваиванием. В процессе вычисления тип промежуточных результатов определяется типами операндов. Погуглите на тему "приведение типов".