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