2016-11-23 4 views
0

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 als char den Typ definiert ist wint_t als int aufgrund der Parameter Förderung definiert werden müssen.

wäre es legitim sein wchar_t als char

Antwort

1

Ja zu definieren, ist es garantiert negativ. Siehe C11

7,21 Eingabe/Ausgabe

7.21.1 Einführung

1 Der Header definiert mehrere Makros und erklärt drei Typen und viele Funktionen zur Durchführung von Ein- und Ausgang.

3 ...

EOF

, die auf einen ganzzahligen konstanten Ausdruck erweitert, mit Typ int und einem negativen Wert

+0

Was ist ** ** Gründe dafür? Warum muss WEOF nicht negativ sein? –

+1

@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. –

+0

@ JonathanLeffler Hör einfach auf, über Geschichte zu sagen. Hast du gedacht, diese Leute waren dumm? Ich versuche die wahre Ursache zu verstehen. –

Verwandte Themen