EOF
is always == EOF
. Don't assume anything else.
On a second reading of the standard (and as per some other comments here) it seems EOF
is always negative - and for the use specified in this question (line number or EOF
) it would work. What I meant to warn against (and still do) is assuming characters are positive and EOF
is negative.
Remember that it's possible for a standard conforming C implementation to have negative character values - this is even mentioned in 'The C programming language' (K&R). Printing characters are always positive, but on some architectures (probably all ancient), control characters are negative. The C standard does not specify whether the char
type is signed or unsigned, and the only character constant guaranteed to have the same value across platforms, is ''
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…