gcc: ожидаемое выражение перед токеном "="

Я пишу простую функцию на C, которая возвращает число "1" в байтах (по битам). Вот мой код, компилятор сообщает: "ожидаемое выражение перед"="токен" в строке, где начинается "для".

#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 ответа

Решение
    for (counter = 0; u; u << = 1)

Проблема компиляции здесь. Вы должны использовать оператор <<= без пробелов. Если вы ставите пробел между ними, компилятор считывает это как два отдельных оператора: "<<" и "=".

У вас также есть пара других проблем, удаление пробела исправляет компиляцию.

Пробел перед = неправильный, если вы хотите использовать оператор присваивания битового сдвига влево.

for (counter = 0; u; u << = 1) должно быть for (counter = 0; u; u <<= 1)

Другие вопросы по тегам