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?)
-
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.