I got the following question in an interview: "Write a C function that round up a number to next power of 2."
I wrote the following answer:
#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);
}
The question is: why does the program go out of its do-while loop when getting to the values 11 and 10?
 
     
     
     
     
     
     
     
    