Я работаю с заданием, где мне нужно написать функцию C, которая вычисляет log2 целого числа без знака n, находя самый значащий установленный бит и возвращая позицию этого бита. Например, если n равно 17 (0b10001), функция должна вернуть 4.
Ниже приведен код, который у меня есть до сих пор, но побитовая операция останавливает программу. Закомментировав цикл через строки 6-9, программа работает нормально. Я не могу для жизни меня понять, почему он делает это. Кто-нибудь может мне помочь?
#include<stdio.h>
#include<stdlib.h>
int mylog2(unsigned int n) {
int log = 1;
while (n != 1) {
n >> 1;
log++;
}
return log;
}
int main() {
int a;
a = mylog2(17);
printf("%d", a);
getch();
return(0);
}
clang
даже предупреждает по умолчанию. - person Carl Norum   schedule 16.09.2012