call by reference probleme
-
hi also irgednwie steh ich grad auf dem schlauch.
void ziffer(char *input) { printf("%i",*input); } int main(int argc, char *argv[]) { unsigned char data; data=255; ziffer(&data); return 0; }
Ich hätte eigentlich erwartet das dort oben in der printf jetzt 255 ausgegeben wird, aber ich bekomme -1 ?
Was genau mach ich den falsch bei dem übergeben?
-
Stichwort interne signed/unsigned Darstellung. Mit Vorzeichen behaftet wird ein char 255 zu einem signed int -1. Und da du nunmal einen int ausgibst
printf("%u", *dings);
sollte helfen...
-
ah ich erinner mich^^
das kuriose ist im hauptprogramm hat es mit
printf("%i\n",data);
komischerweise funktioniertedit:
void ziffer(char *input) { printf("%u",*input); //4294967295 } int main(int argc, char *argv[]) { unsigned char data; data=255; ziffer(&data); printf("%i",data); //255 printf("%u",data); //255 return 0; }
ok jetzt bin ich verwirrt
edit2:
ok ich bin nen depp wenn man im hauptprogramm unsigend char und im up char erwaret kannauch nichts vernünftiges bei rauskommen
-
Dragonslayer schrieb:
ah ich erinner mich^^
das kuriose ist im hauptprogramm hat es mit
printf("%i\n",data);
komischerweise funktioniertDas liegt vielleicht daran, dass du in
void ziffer(char *input)
einenchar
und nichtunsigned char
übergibst.char
ist soweit ich weiss nicht definiert, ob signed oder nicht, aber auf deinem System scheint es das zu sein. In C++ hätte das nicht kompilieren dürfen, aber hier sind wir ja mit C unterwegs
-
ja ist mir auch grad aufgefallen, ich hab mich gewundert das der compiler sich nicht drüber aufregt, das ich nen unsigend char, als char übergebe.
Der Fehler war so dumm das er mir nicht aufgefallen ist
-
seit wann sind denn die fehler dumm?
*scnr*