How to fix C/C++ round(): error: invalid operands of types 'float' and 'int' to binary 'operator&'
Problem:
You are trying to compile a C/C++ program but you see an error message like
src\main.cpp:357:21: error: invalid operands of types 'float' and 'int' to binary 'operator&'
that refers to a line like
long m = round(v) & 0x7FF;
Solution
The result of round()
is a floating point number. You are trying to use the &
operator to perform bitwise AND
of a float
and an int
(0x7FF
in the example above). However, you can not perform bitwise operation on float
s in C/C++.
In order to fix this, case the result of round()
to int
:
long m = ((int)round(v)) & 0x7FF;
That should fix the compiler error.