あるインタビューで次のような質問を受けました:「数値を次の 2 の累乗に切り上げる C 関数を書きなさい」
私は次の答えを書きました:
#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 になると、なぜプログラムがループから抜け出すのかということです。