Datentypumwandlung



  • Hallo

    ich habe Probleme zu verstehen, warum der folgende Code nicht funktioniert..

    int fnMean(char *cVal1 ,char *cVal2)
    {
    int y,i,j;

    i= *cVal1;
    j= *cVal2;

    y= i+j;

    return y;
    }

    Wenn die Summe von i und j 255 übersteigt gibt es einen Überlauf. Z.B. i=100, j=200 liefert y = 44. i und j sind doch int? Ich werd gleich wahnsinnig.. 😕



  • Wie hast du denn die Funktion aufgerufen? (btw, welchen Sinn hat es eigentlich, die Parameter per char-Zeiger zu übergeben?)


  • Mod

    Acko schrieb:

    j=200

    Falls deine chars vorzeichenbehaftet sind und 8 bits haben, dürfte das unmöglich sein.



  • Der Hintergrund für die Funktion ist die Berechnung von Mittelwerten für Farbwerte RGB in einem Pixelwert. Die RGB-Werte aus einem 4-Byte Pixelwert übergebe ich als char-Pointer an die Mittelwertbildung.

    Ja, es lag genau daran, dass die chars vorzeichenbehaftet waren. Mit unsigned char funktioniert es. 👍

    Besten Dank für den Tip. Bin noch Anfänger, was c betrifft.



  • Acko schrieb:

    Besten Dank für den Tip. Bin noch Anfänger, was c betrifft.

    Hier bist du aber im C++ Forum.


Anmelden zum Antworten