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

本文解析了几个C++编程中的谜题,包括计算二进制中1的个数的巧妙方法、条件判断中的赋值操作及C++中罕见的标签语法。通过这些例子加深对C++的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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++中一个几乎不会被用到的语法,标签。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值