Compiler-Warnung: comparison unsigned with signed



  • Hallo,

    ist es eigentlich richtig, dass der C-Compiler eine Warnung ausgibt, wenn man eine Funktion schreibt mit einem Funktionsparameter "char daten" und innerhalb dieser Funktion die daten mit einem define-Wert verglichen wird, der 0 oder Negativ ist?

    Die Funktion wird bis jetzt noch nirgends aufgerufen im Programm.

    #define DEFINE_WERT -1
    
    void fktsname (char daten)
    {
      if(daten == DEFINE_WERT)
        //mach irgendwas 
    }
    

    Die Compiler-Warnung ist:
    "pointless comparison of unsigned integer with a negative constant"

    Gruß
    derTim



  • kann es sein, dass bei dir 'chars' unsigned sind? das kommt schon mal vor. mach doch aus dem define: #define DEFINE_WERT (char)-1
    🙂



  • ruf doch mal fktsname(255) auf 😃



  • #define-freak schrieb:

    kann es sein, dass bei dir 'chars' unsigned sind? das kommt schon mal vor. mach doch aus dem define: #define DEFINE_WERT (char)-1

    Macht das Sinn?
    Er kann ja keine negativen chars erzeugen, tatsächlich vergleicht er dann mit 255 😞 . Statt zu casten wär' gleich int zu nehmen sauberer. Auch möglich: Testen, ob der Compiler signed char anbietet. 😋


Anmelden zum Antworten