Ксения (25.02.2019 15:52 - 16:05, просмотров: 79) ответил misyachniy на Приводил к "unsigned char" и сравнивал, на картинке закомментирована строчка.
В закомментареной строке у вас другое условие. Вот как надо: if( (data_buf[i] ^ (unsigned char)signal_busy) == 0))
{
zero_counter++;
}
Тогда data_buf[i] будет приведено к int вида 0x000000FE
Тогда signal_busy будет приведен к int вида 0x000000FE
и операция после приведения произойдет нормально.
По той же причине
if( (unsigned char)data_buf[i] == (unsigned char)signal_busy)
равны, а
if( data_buf[i] == signal_busy)
неравны, т.к. в последнем случае:
data_buf[i] будет приведено к int вида 0x000000FE
signal_busy будет приведен к int вида 0xFFFFFFFE