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