В интервью у меня появился следующий вопрос: "Напишите функцию C, которая округляет число до следующей мощности 2".
Я написал следующий ответ:
#include <stdio.h>
int next_pwr_of_2(int num)
{
int tmp;
do
{
num++;
tmp=num-1;
}
while (tmp & num != 0);
return num;
}
void main()
{
int num=9;
int next_pwr;
next_pwr=next_pwr_of_2(num);
printf(" %d \n",next_pwr);
}
Вопрос: почему программа выходит из цикла do-while
при достижении значений 11 и 10?