题目:以下代码结果是多少?#includeusingnamespacestd;int?func(int?x){????int?count??0;????whil 题目:以下代码结果是多少? # include using namespace std; int func(int x) { int count = 0; while(x)
题目:以下代码结果是多少?
# include
using namespace std;
int func(int x)
{
int count = 0;
while(x)
{
count ++;
x=x
}
return count;
}
int main(int argc, char **args)
{
cout << func(9999) < return 0; } A. 8 B. 9 C. 10 D. 11 看到这道题,结合后面的选项,我想,题目考察的肯定不是简单的计算问题,选项上面只有8,9,10和11 这几种情况,于是,我就想,先把9999化成二进制的形式:1001 1100 0011 11,然后,将这个数值带 到上面的func()函数中,一步一步算,从后面的答案知道,题目最坏的情况是循环11次,也不多。所以, 经过“漫长的计算”,得出count的结果为8,这不正好是9999化成二进制中1的个数吗? 为什么经过x=x 0 0 当x为0时,x else return 0; } int main() { int x = 8; printf("%d\n", func(x)); } 9999二进制 及 x=x&(x-1)问题