ajp*_*jpr -2 c++ for-loop if-statement
我在C++中练习一些示例我找到了一个程序,代码如下:
unsigned int num;
int c = 0;
cin >> num;
for (; num; num <<= 1)
{
if (num & 1)
{
c++;
}
}
cout << "c : " << c << endl;
Run Code Online (Sandbox Code Playgroud)
所以我有以下问题:
在这个for循环条件中,第二个参数是num- 保持它的意义是什么num; 为什么不是任何条件喜欢num<29或可能是其他一些价值?
而第三个参数是z=num <<= 1,我在这里一直保持z做一些调试要知道在此条件下所获得的价值,但我发现,当操作者,它只是双打>>=和半时,它是<<=.为什么会这样?
在if条件下我们有if (int y=num & 1).我无法理解它的用途 & 1?
我试图通过调试来理解它,但我想知道这三个问题的清楚解释,这就是为什么我想问专家.
第三,&是一个按位运算AND符.否则if (int y=num & 1),如果号码的最后一位(最低显著位)设置检查.如果设置,则数字为奇数,如果未设置,则为偶数.但是,y在这里是垃圾,if (num & 1)足以检查.