给出C/C++代码,读代码做题(题型总结,持续更新ing)

1.题目:

如下一段神奇的代码实现的功能是什么?

int miracle(unsigned int n)
{ 
    int m= n==0 ? 0:1;
    while (n=(n&(n-1)))
    {
    m++;
    }
    return m;
}

答案:

n的二进制表示中“1”的个数
解析:

此题的理解核心是 n&(n-1),例如:

 n = 10100(二进制),则(n-1) = 10011  ;    n&(n-1) = 10000

n&(n-1)表示将n中最右的一个1变成0.。

while (n=(n&(n-1))) 代表当1都变成 0之后,循环结束

2.题目:

请阅读以下程序:

void main() 
{ 
int a=5,b=0,c=0; 
if (a=b+c) printf ("***\n"); 
else  printf("$$$\n"); 
}

答案:输出$$$

解析:先将b+c的值赋给a

3.题目:

程序出错在什么阶段__?

int main(void) {
    http://www.taobao.com
    cout << "welcome to taobao" << endl; 
}

答案:程序运行正常

解析:

双斜杠之后的www.taobao.com被当做注释了,那么前面的http:是否合法?这就是C++中一个几乎不会被用到的语法,标签。

你可能感兴趣的:(练习,校招题,C)