int c;
while ((c = getchar()) != EOF)
putchar(c);
„Dieser Wert wird EOF genannt, für "das Ende der Datei". Wir müssen c erklären eine Art groß sein genug, um EOF zusätzlich zu jedem möglichen Zeichen zu halten. Deshalb verwenden wir int. "Beispiel in Kapitel 1, 1.5.1, von der Programmiersprache C Zweiten edittion K & R,
korrigiert mich wenn ich falsch bin:
- (signiert) char = [-128. +127]
- unsigned char = [0, 255]
- EOF = -1
wenn ich int
mit char
in dem obigen Programm ersetzen Sie es wie beabsichtigt zu funktionieren scheint, aber nach einigen Recherchen fand ich aus, dass es nicht, weil die Variable c
nicht speichern kann -1 aka EOF
(wenn auch mit char
).
Ich lief es trotzdem und versuchte es zu crashen, versuchte ich negative Zahl wie -1 einzugeben, aber es hat nicht funktioniert. Ich glaube das liegt daran, dass es wie 2 verschiedene Zeichen -
und 1
interpretiert wird. Ich versuchte ÿ
welches ist das Zeichen entsprechend ASCII-Wert 255 nach http://ascii-code.com/, also für welche Eingabe wird das obige Programm (mit char
anstelle von int
) Absturz?
(Informationen, ich bin mit einem 64-Bit-Fedora Linux)
Warum denkst du wird es abstürzen? – melpomene
'Korrigieren Sie mich, wenn ich falsch liege:' - Sie liegen falsch. Tauschen Sie die Bereiche "signed" und "unsigned". Und wie Olaf gesagt hat. –
'SCHAR_MIN', die untere Grenze von' signed char', ist typischerweise '-128', nicht' -127'. Das ist für 2'-Komplement-Implementierungen mit 'CHAR_BIT == 8'. Andere Werte sind möglich. Plain 'char' kann entweder signiert oder vorzeichenlos sein; Es hat den gleichen Bereich und die gleiche Darstellung wie "signed char" oder "unsigned char", aber es ist immer noch ein eigener Typ. –