C/C++ round()-Fehler beheben: error: invalid operands of types 'float' and 'int' to binary 'operator&'

English Deutsch

Problem:

Sie versuchen, ein C/C++-Programm zu kompilieren, aber Sie sehen eine Fehlermeldung wie

error_log.txt
src\main.cpp:357:21: error: invalid operands of types 'float' and 'int' to binary 'operator&'

die sich auf eine Zeile wie

fix_round_cast.c
long m = round(v) & 0x7FF;

Lösung

Das Ergebnis von round() ist eine Gleitkommazahl. Sie versuchen, den &-Operator zu verwenden, um ein bitweises AND zwischen einem float und einem int (0x7FF im obigen Beispiel) durchzuführen. Sie können jedoch keine bitweisen Operationen auf floats in C/C++ durchführen.

Um dies zu beheben, wandeln Sie das Ergebnis von round() in int um:

fix_round_cast.c
long m = ((int)round(v)) & 0x7FF;

Das sollte den Compilerfehler beheben.


Check out similar posts by category: C/C++, GCC Errors