Warum ist hier ein Cast erforderlich?



  • char toUpper(char x)
    {
      return(x >= 'a' && x <= 'z' ? x - 'a' + 'A' : x);
    }
    

    ich bekomme bei dieser Funktion eine Fehlermeldung, weil anscheinend der Rückgabetyp nicht kompatibel zu den Operanden des ?-Operators sein soll.
    Das heißt: der Compiler zwingt mich dazu, einen Cast zu verwenden. Nur weiß ich nicht: wieso? Kann mir jemand dieses Verhalten des Compilers erklären?

    Vielen Dank im voraus!



  • Mit char kann nicht gerechnet werden, aber existiert eine implizite Umwandlung von char nach int. Deshalb kann der Ausdruck ausgewertet werden, hat aber dann den Typ int.



  • haette ich eigentlich wissen muessen...

    Danke


Anmelden zum Antworten