_BitScanReverse возвращает 0, когда индекс равен 1, что означает в соответствии с MS «не было установлено никаких битов» - PullRequest
0 голосов
/ 03 июня 2018

Скопировано непосредственно из MSDN ...

unsigned char _BitScanReverse(  
   unsigned long * Index,  
   unsigned long Mask  
);  

Описание

Поиск данных маски от старшего значащего бита (MSB) до младшего значащего бита (LSB)для установленного бита (1).

Возвращаемое значение

Ненулевое значение, если был установлен индекс, или 0, если не было установлено ни одного установленного бита .

В соответствии с описанием возвращаемого значения, если не был найден установленный бит, то Index = 0.Но что происходит в случае, когда маска = 1?Запустив пример кода, который поставляется вместе с инструкцией в документации MSDN, он также возвращает 0, что сбивает с толку программиста, поскольку он не знает, «не был ли установлен установленный бит» или «индекс равен 1».

AmЯ что-то не так понимаю?

1 Ответ

0 голосов
/ 03 июня 2018

Вы неправильно читаете документацию.Возвращаемое значение равно 1 или 0, в зависимости от того, есть ли ненулевые биты в mask.Индекс установленного бита возвращается в *Index.Не возникает путаницы.

...