在K&R的"C编程语言"一书中,有一个位计数功能:
int bitsCount(unsigned x)
{
int b;
for (b = 0; x != 0; x >>= 1)
if (x & 01)
b++;
return b;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么他们使用x&01而不是x&1或x&00000001?是不是01表示八进制1?
有两个版本的字符串复制函数用C编写.我的问题是为什么版本1需要"!='\ 0'"但版本2不需要.如果我使用版本2复制字符0,"0"将终止应对过程怎么办?
void version1(char to[], char from[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0')
++i;
}
char *version2(char *dest, const char *src)
{
char *addr = dest;
while (*dest++ = *src++);
return addr;
}
Run Code Online (Sandbox Code Playgroud)
另外,为什么像"1230456"这样的输入不会终止复制,因为'0'出现在字符串的中间?