本文共 590 字,大约阅读时间需要 1 分钟。
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++中一个几乎不会被用到的语法,标签。
转载地址:http://xjssi.baihongyu.com/