Помнит ли кто спецификацию языка С? Мне казалось, что битовые операции должны выполняться раньше оперций сравнения. Например, такой код if( *ptr & 0x0F == 0x01 ) Сколько я помнил, сначала должна быть выполнена операция &, а потом ==. В отличие, например от if( *ptr && 0x0F == 0x01 ) Где сначало должно пройти сравнение, а потом &&.
Если я не ошибаюсь, то ошибается IAR 4.40, он на первый пример полностью пропускает весь код, считая что 0x0F никогда не равен 0x01. Я решил этот вопрос скобками, но все же... if( (*ptr & 0x0F) == 0x01 )
|