Gast
#5417148
Hallo, ist es möglich bei cin eine char variable als Zahl einzugeben?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
gruß Alex
|
Anzeige
|
cin char variable eine Zahl eingeben.
Gast
#5417148
Hallo, ist es möglich bei cin eine char variable als Zahl einzugeben?
gruß Alex Alex schrieb: > Hallo, > ist es möglich bei cin eine char variable als Zahl einzugeben? > >
etwa so:
Alex schrieb: > char var; > > //so wie hier > scanf("%d", &var); // 5 eingeben var = 5 Der richtige Formatspecifier dafür ist "%hhd" Bei %d werden sizeof(int) Bytes überschrieben. Und dann steht in var nur bei little Endian Maschinen der richtige Wert. Nachfolgende Variablen werden evtl. (abhängig vom Alignement) überschrieben. Dirk B. schrieb: > Alex schrieb: >> char var; >> >> //so wie hier >> scanf("%d", &var); // 5 eingeben var = 5 > > Der richtige Formatspecifier dafür ist "%hhd" > > Bei %d werden sizeof(int) Bytes überschrieben. Und dann steht in var nur > bei little Endian Maschinen der richtige Wert. > Nachfolgende Variablen werden evtl. (abhängig vom Alignement) > überschrieben. Oder anders gesagt: Das Verhalten ist undefiniert, da man damit scanf dazu verleitet, in Speicher zu schreiben, der ihm nicht gehört.
Gast
#5421879
Danke euch! Hab die Frage aber etwas anderes gemeint. Kann man eine Zahl von 0 - 255 in eine char variable mit cin eingeben oder muss man das über Umwege machen. Das man es mit einem Umweg über eine int Variable machen kann ist mir klar. ich wollte wissen ob es direkt geht.
Alex schrieb: > Hab die Frage aber etwas anderes gemeint. Das war mir auch klar, da ich aber C++ nicht kann, wollte ich dich auf deinen C-Fehler hinweisen. Alex schrieb: > Kann man eine Zahl von 0 - 255 in eine char variable Bei char ist nicht klar, ob es signed oder unsigned ist. Das ist vom Compiler, bzw. dessen Einstellungen abhängig. Besser du nimmst statdessen uint8_t. Das macht es aber leider beim cin auch nicht besser. Bei der Suche nach "cin uint8_t" kommt immer: gehe über int Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|