Ist im Standard geschrieben, dass EOF
negativ sein muss? Im Gegensatz dazu muss WEOF
nicht negativ sein. Warum? Die Situation für wchar_t
darf nicht in irgendeiner Weise unterscheidet sich von gewöhnlichen char
(es sei denn, die automatische Förderung von char
zu int
spielt die Rolle), weil wchar_t
als char
definiert, mit dem Standard ist völlig in Ordnung. Daher müssen ähnliche Regeln gelten.Erfordert der Standard, dass EOF negativ ist?
Einige Zitate aus glibc Referenz:
wenn
wchar_t
alschar
den Typ definiert istwint_t
alsint
aufgrund der Parameter Förderung definiert werden müssen.
wäre es legitim sein
wchar_t
alschar
Was ist ** ** Gründe dafür? Warum muss WEOF nicht negativ sein? –
@IgorLiferenko: Es gibt keine Begründung; Es ist historisch, was erwartet wurde und der Standard hat es 1989 und seitdem gesagt. Es unterscheidet natürlich das Zeichen von'EOF' von den gültigen Zeichenwerten, die von 'getchar()' und Freunden zurückgegeben werden. –
@ JonathanLeffler Hör einfach auf, über Geschichte zu sagen. Hast du gedacht, diese Leute waren dumm? Ich versuche die wahre Ursache zu verstehen. –