Я наткнулся на несколько строк кода, которые я не понимаю, и был бы благодарен за разъяснение:
if(!(counter&7))
ds->direction = ts->direction;
, если counter кратно 8
counter
, установите direction элемент *ds равным элементу direction *ts
direction
*ds
*ts
Первый проверяет, является ли результат побитового И на счетчике с 7 не нулевым, а последний присваивает значение direction члена одной структуры элементу direction другого.
1) так же, как
if (!(counter & 7))
if ((!(counter & 7)) != 0)
if ((counter & 7) == 0)
2) так же, как
(*ds).direction = (*ts).direction;
ds
ts