Я пришел через несколько строк кодирования я не понимаю, и был бы признателен за разъяснение:Случайные C вопросы/Objective-C
if(!(counter&7))
ds->direction = ts->direction;
Я пришел через несколько строк кодирования я не понимаю, и был бы признателен за разъяснение:Случайные C вопросы/Objective-C
if(!(counter&7))
ds->direction = ts->direction;
, если counter
кратно 8
установить direction
элемент *ds
равный direction
элемент *ts
Первый проверяет, является ли результат бит-И на счетчике с 7 не равным нулю, а второй присваивает значение члена direction
одной структуры члену direction
другого.
1) такой же, как
if (!(counter & 7))
if ((!(counter & 7)) != 0)
if ((counter & 7) == 0)
2) так же, как
(*ds).direction = (*ts).direction;
ds
(должно быть структурного типа) в направлении ts
В (1), я думаю, что в скобках часть шага 4 верна, если 'counter' is unsigned ... –
Это зависит, я думаю, от представления. Для знака, величины и двух дополнений, я думаю, что он держится (три младших бита равны нулю, это означает, что число кратно 8) – pmg
Действительно. На самом деле мне любопытно, что стандарт говорит о подписанных побитовых операторах. Я не мог найти какой-либо язык, специфичный для подписанных или неподписанных типов, поэтому я предполагаю, что они должны работать поразрядным представлениям. –
Где «одна структура» == «структура, на которую указывает указатель ds» и «другая» == «структура, на которую указывает указатель ts». – sepp2k