【发布时间】:2013-01-09 18:26:53
【问题描述】:
int f(int n)
{
int i, c = 0;
for (i=0; i < sizeof(int)*8; i++, n >>= 1)
c = (n & 0x01)? c+1: c;
return c;
}
这是我在书上找到的一个练习,但我真的不明白!
【问题讨论】:
-
您对哪个具体部分有疑问?
-
它返回一个
int。确切的值取决于传递给函数的参数。 -
@CarlNorum,我不明白这部分的作用:c = (n & 0x01)? c+1: c;
-
要弄清楚这一点,请查看函数的每个部分并确保您理解它。该函数非常简单,您可以在一张纸上“运行”它,这应该有助于您理解。
-
@user1100421,我在下面的回答中解决了这个问题。