То, что вы опубликовали, приводит к ошибке компиляции:
main.c:52:44: error: ‘n’ undeclared (first use in this function)
printf("count = %d, largest run = %d\n", n, count(n));
^
Как показывают комментарии в вашем коде, вам нужно добавить следующую строку:
int n = n = atoll(argv[1]);
Измените вашу main
функцию, чтобы она выглядела примерно так:
int main (int argc, char *argv[])
{
if(argc < 2)
{
printf ("Usage: p3 <int>\n");
}
else
{
int n = atoll(argv[1]);
printf("count = %d, largest run = %d\n", n, count(n));
}
return 0;
}
Если ваша count
функция должна return
число 1
битов в n
, ваша реализация не будет работать. Измените тело while
на следующее:
ret += x % 2;
x /= 2;