第三题:
下面代码printf打印的结果是多少?
int main()
{
int n =
9999;
int nCount =
0;
while (n)
{
nCount++;
n = n & (n -
1);
}
printf(
"%d\n", nCount);
return 0;
}
运行结果:
PS:仔细看那个while循环里面的操作,其实它在完成一件事情,就是求n转换为二进制之后1的数目,9999转换为二进制位0010 0111 0000 1111,可以清楚的看到有8个1,最后结果为8。
第四题: 下面代码printf打印的a和x值分别是多少?
int main()
{
int a,
x;
for (a =
0,
x =
0; a <=
1 && !
x++; a++)
{
a++;
}
printf(
"a=%d\n", a);
printf(
"x=%d\n",
x);
return 0;
}
运行结果:
PS:对于这个题目了解for循环的执行顺序,然后就是!x++,先执行!x=1此处并不改变x的值,然后执行的x++把x的值改成1。