rückgabewert von printf, getchar fragen, ascii
-
#include <stdio>
int main(){
int iZahl;
printf("Bitte eine Ziffer eingeben: ");
iZahl = getchar() - 5 * getchar();
printf("\niZahl = %i\n", iZahl);return 0;
}
meine Lehrering sagt ich soll eine 2 eingeben.Wenn ich eine 2 eingebe, dann gibt das Programm eine 0 aus. Getchar von 2 liefert wegen der Asciitabelle eine 50 zurück und 5 eine 53. Wieso kommt 0 raus?
Danke
-
c# kennt weder printf noch getch
-
Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Es kommt 0 als Ergebnis, weil du zwei Zeichen mit getchar abfragst.
Wenn du nur "2" und danach die Return/Enter-Taste betätigst, dann liefert das erste getchar den ASCII-Wert 50 (hast du ja schon festgestellt) und das zweite getchar() den Wert 10 (für Linefeed), d.h. 50 - 5 * 10 = 0.Du kannst es ja einzeln überprüfen:
int main() { int iZahl, iZahl1, iZahl2; printf("Bitte eine Ziffer eingeben: "); iZahl1 = getchar(); printf("1. Zeichen: %i\n", iZahl1); iZahl2 = getchar(); printf("2. Zeichen: %i\n", iZahl2); iZahl = iZahl1 - 5 * iZahl2; printf("\niZahl = %i\n", iZahl); return 0; }
Aber eigentlich ist diese Art der Abfrage so unüblich.
Für die Abfrage wird entweder eine Schleife benutzt (wahrscheinlich kommt das bei euch noch) oder aber die Funktion 'scanf(..)'.
-
Danke für deine Antwort, noch eine kleine Frage
"das zweite getchar() den Wert 10 (für Linefeed)"
was ist ein linefeed?
-
Linefeed ist der englische Ausdruck für "neue Zeile", d.h. wenn du printf("\n") schreibst, dann erzeugst du damit ein "Linefeed".
Unter Windows-Systemen ist es sogar üblich, mit einem sog. Carriage Return / Linefeed ein Zeilenende (in Textdateien) zu markieren, das entspricht dann den beiden ASCII-Zeichen 13 und 10 (nur zur Info, falls du über den Begriff auch irgendwann mal stolperst).
-
... und bei Mac Osxx ist es nur CR. Stimmts?
-
... und bei Mac Osxx ist es nur CR. Stimmts?
-
Th schrieb:
Linefeed ist der englische Ausdruck für "neue Zeile",
könnte auch stromzuführung oder strichfutter heissen