gcc:在“=”标记之前的预期表达式

时间:2013-10-14 16:01:46

标签: c gcc gcc-warning

我正在用C编写一个简单的函数,它在字节(逐位)中返回一个“1”。 这是我的代码,编译器告诉:“预期的表达式在”=“token”之前“在哪里”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;
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

汇编问题在这里。您应该使用运算符&lt;&lt; =没有空格。如果在中间放置一个空格,编译器会将其读作两个独立的运算符:'&lt;&lt;'和'='。

你也遇到了其他一些问题,删除空间修复了编译。