本Linux System Programmingで、私は次のようなものを読みました:
fgetcファイルまたはエラーの最後にorunsigned charへのキャストとして読み取られた文字を返します。使用する一般的なエラーは次のとおりです。intEOFfgetcchar c; if ((c = fgetc()) != EOF) {...}このコードの正しいバージョンは次のとおりです。
int c; if ((c = fgetc()) != EOF) { printf("%c", (char)c); ... }
では、なぜcharと比較する前に戻り値をキャストできないのEOFでしょうか? EOFと正確に比較する必要があるのはなぜintですか? としてEOF定義されているよう-1に、通常は にキャストされcharませんか?
そうでないプラットフォーム/コンパイラはありますか?