fgetc, prüft EOF

Im BuchLinux-Systemprogrammierung Ich habe einige davon gelesen:

fgetc Liefert das gelesene Zeichen alsunsigned char Besetzung anint oderEOF am Ende der Datei oder Fehler. Ein häufiger Fehler bei der Verwendung vonfgetc ist:

char c;
if ((c = fgetc()) != EOF) {...}

Die richtige Version dieses Codes lautet:

int c;
if ((c = fgetc()) != EOF) { printf("%c", (char)c); ... }

Warum kann ich einen Rückgabewert nicht auf "" setzen?char vor dem Vergleich mitEOF? Warum muss ich vergleichenEOF genau mitint? WieEOF definiert als-1ist es normalerweise nicht gegossenchar?
Gibt es Plattformen / Compiler, auf denen dies nicht zutrifft?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage