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)