2

我正在用 C 编写一个简单的函数,它以字节(逐位)返回一个数字“1”。这是我的代码,编译器告诉:“在“for”开始的行中“=”标记之前的预期表达式。

#include <stdio.h>
#include <stdlib.h>

int return_num_of_1(unsigned char u);

int main()
{
    printf("Hello world!\n");
    return 0;
    return_num_of_1(1);
}


int return_num_of_1(unsigned char u)
{

    int counter;

    for (counter = 0; u; u << = 1)
    {
        if(u & 1) counter++;
    }

    return counter;
}
4

2 回答 2

2
    for (counter = 0; u; u << = 1)

编译问题在这里。您应该使用不带空格的运算符 <<=。如果您在中间放置一个空格,编译器会将其读取为两个单独的运算符:'<<' 和 '='。

那里还有一些其他问题,删除空间修复了编译。

于 2013-10-14T16:06:17.987 回答
1

= 之前的空格是错误的,如果你的意思是使用移位左分配运算符。

for (counter = 0; u; u << = 1)应该for (counter = 0; u; u <<= 1)

于 2013-10-14T16:04:31.990 回答