Hallo, ich habe mal ne frage an alle erfahrenen c-programmierer. Also wenn ich das richtig verstanden habe ist es möglich mit char zu rechnen wie mit int indem man die Zahl über den %d operator einliest. (z.B. scanf("%d",&x);) Stimmt das ? Ich habe ein kleines Beispielprogramm erstellt, dass nicht das macht was ich erwartet habe. Es wäre super wenn irgendwer es mir erklären könnte: int main(void) { char x,y,z; scanf("%d",&x); // z.B 5 scanf("%d",&y); // z.B 6 scanf("%d",&z); // z.B 7 printf("%d\n",x); printf("%d\n",y); printf("%d\n",z); return 0; } Nach Eingabe der Zahlen 5,6,7 hätte ich eigentlich die Ausgabe von 5 6 7 erwartet. Allerdings erscheint: 0 0 7 ??? Woher kommen die ersten beiden Nullen und wo sind meine 5 und 6 hin ? Bitte um Hilfe Gruß Hanz
Bei mir funktioniert das Beispiel so wie es soll.(MS Visual C++ Studio) Welchen Compiler benutzt du?
Hallo. Mein C-Grundlagenbuch sagt, daß der Formatstring "%d" eine ganze Dezimalzahl vom Typ int ist. Vielleicht hilft ja: int x,y,z; oder char x,y,z; int t; scanf("%d", &t); x = (char) t; denn char und int unterscheiden sich. Char ist 8-bittig und int belegt 2 bis 4 Byte, je nach Computersystem. Beim avr-gcc wohl 16 Bit.
> Also wenn ich das richtig verstanden habe ist es möglich mit char > zu rechnen wie mit int indem man die Zahl über den %d operator > einliest. Du wirfst hier zwei Sachen durcheinander. char ist ein Integerdatentyp, der sich wie alle anderen Integers verhält. Aber Vorsicht, je nach Compiler kann char signed oder unsigned sein, also zum Rechnen lieber explizit signed char oder unsigned char benutzen. > (z.B. scanf("%d",&x);) Stimmt das ? Nein. %d steht für int. Bei printf darf es auch für char eingesetzt werden (wird eh bei Übergabe automatisch nach int konvertiert), aber bei scanf übergibt man ja Zeiger, und da muß der Typ 100%ig stimmen. Ich glaube, es gibt für char keinen entsprechenden Format-Modifier. Also mußt du erst in einen int lesen und dann in einen char konvertieren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.