eine frage
-
Cico schrieb:
Ich hatte ebenfalls recht mit der Aussage das es ein End of File Marker ist...
warum willst du mit aller gewalt recht behalten?
EOF is a character which indicates the end of a file....
wenn man's genau nimmt, ist dieser text auch nicht ganz richtig.
EOF ist kein 'character'.aber egal, alles weitere wär' nur erbsenzählerei.
-
net schrieb:
kingruedi schrieb:
@net
'\0' ist in C übrigens auch ein intsicher? ich dachte durch das '' wirds zur char-konstanten.
aber eigentlich ist es doch bloss eine null. ohne typ, kann man einem char, int, long usw. zuweisen
oder nicht?'\0' ist 0, ich glaube sogar unsigned int, weil man keine negative chars hat. Deshalb macht man auch bei (wenn x ein char[...] ist) x[4]=0; und die Compiler geben da keine Warnungen wegen Typfehler oder so.
-
ob es unsigned ist, weiss ich nicht. Aber char muss ja auch nicht unsigned sein!
Das int implizit in char konvertiert wird, ist klar, sonst hätten die sicher aus ''-Literalen keine ints gemacht, wär ja doof immer char a=(char)'a'; schreiben zu müssen
btw. in C++ sind ''-Literale aber wirklich chars!
-
[quote="net"]
Cico schrieb:
Ich hatte ebenfalls recht mit der Aussage das es ein End of File Marker ist...
warum willst du mit aller gewalt recht behalten?
Weil ich mir von dir nicht sagen lasse das ich im unrecht bin,wenns nicht so ist...EndOfFile
-
Cico schrieb:
Weil ich mir von dir nicht sagen lasse das ich im unrecht bin,wenns nicht so ist...
es war aber so.
das meinte ich:Cico schrieb:
EOF ist in dem fall ein #define das -1 oder 0 sein kann...es markiert aber trotzdem das Ende eines strings.
1. ist EOF nicht das ende eines strings. strings werden in c mit einer 0 begrenzt
2. kann EOF nicht 0 sein denn dann könte man keine nullen in files schreibenedit: punkt 2 nehm' ich wieder zurück
-
so um mal hier mit den Spekulationen aufzuräumen
ISO/IEC 9899:1999 7.19.1.3 schrieb:
3 The macros are NULL (described in 7.17);
[...]
EOF
which expands to an integer constant expression, with type int and a negative value, that
is returned by several functions to indicate end-of-file, that is, no more input from a
stream;
-
es war aber so.
das meinte ich:Cico schrieb:
EOF ist in dem fall ein #define das -1 oder 0 sein kann...es markiert aber trotzdem das Ende eines strings.
1. ist EOF nicht das ende eines strings. strings werden in c mit einer 0 begrenzt
2. kann EOF nicht 0 sein denn dann könte man keine nullen in files schreibenedit: punkt 2 nehm' ich wieder zurück ;)[/quote]
Zu punkt 2:
#define EOF 0 /* The problem is, that value is not the same for all computers. On some computers you would define the constant like this: #define EOF -1 On others you would define it like this: #define EOF 0 */
siehe dazu auch:
http://www.glue.umd.edu/afs/glue.umd.edu/system/info/olh/Programming/C_Programming_on_Glue/The_Third_C_Program_Character_Data/eof_stdio
-
Cico schrieb:
/*
The problem is, that value
is not the same for all computers. On some computers you would define the
constant like this:
#define EOF -1
On others you would define it like this:
#define EOF 0
*/das ist aber unsinn, auch wenn's im internet steht. warum?
weil man dann mit fgetc() keine nullen aus einem stream lesen könnte.
wie soll man in diesem fall eine 0 von EOF unterscheiden?
-
net schrieb:
Cico schrieb:
/*
The problem is, that value
is not the same for all computers. On some computers you would define the
constant like this:
#define EOF -1
On others you would define it like this:
#define EOF 0
*/das ist aber unsinn, auch wenn's im internet steht. warum?
weil man dann mit fgetc() keine nullen aus einem stream lesen könnte.
wie soll man in diesem fall eine 0 von EOF unterscheiden?lol idiot
-
Wir reden hier von dem Statusbit bei der Fehlerbehandlung das gesetzt wird bei einem Stream.(Rückgabewert)bool EOF() ist soviel ich weiß immer das letzte Zeichen.Es kann bei -1 True sein oder wenn es auf 0 oder NULL ist...ist abhängig von deiner Streamstatus abfrage...
-
Was ist eigentlich mit euch los? Da poste ich schon ein Zitat aus dem C99 Standard und ihr diskutiert immer noch den Blödsinn weiter. Da steht doch wohl eindeutig, dass EOF zu einem negativen int Wert evaluiert. Und 0 ist wie ihr sicher wissen solltet kein negativer int Wert
-
kingruedi schrieb:
Und 0 ist wie ihr sicher wissen solltet kein negativer int Wert
Im 1er Komplement gibts für die 0 eine negative Darstellung
-
interpreter schrieb:
kingruedi schrieb:
Und 0 ist wie ihr sicher wissen solltet kein negativer int Wert
Im 1er Komplement gibts für die 0 eine negative Darstellung
(((-0)<0)==0)
-
Daniel E. schrieb:
interpreter schrieb:
kingruedi schrieb:
Und 0 ist wie ihr sicher wissen solltet kein negativer int Wert
Im 1er Komplement gibts für die 0 eine negative Darstellung
(((-0)<0)==0)
true
-
interpreter schrieb:
kingruedi schrieb:
Und 0 ist wie ihr sicher wissen solltet kein negativer int Wert
Im 1er Komplement gibts für die 0 eine negative Darstellung
wie sieht die aus? 0^1? da werden doch nur alle bits invertiert.
hat doch mit + oder - nichts zu tun...
-
net schrieb:
interpreter schrieb:
Im 1er Komplement gibts für die 0 eine negative Darstellung
wie sieht die aus? 0^1? da werden doch nur alle bits invertiert.
hat doch mit + oder - nichts zu tun...Doch, doch. Per Definition kommt man zu der negativen Darstellung einer Zahl, indem man alle Bits invertiert. Ist die 0 also sinngebenderweise 000...0 (n mal), dann ist das Komplement 111...1 (auch n mal), was dann eben -0 ist. Das hat natürlich nichts damit zu tun, daß "-0 == 0" auf jeder Implementierung der Sprache C 1 zu ergeben hat. Wenn Du Sauereien mit den einzelnen Bits machst, dann aber nicht.
-
Daniel E. schrieb:
Per Definition kommt man zu der negativen Darstellung einer Zahl, indem man alle Bits invertiert.
Anmerkung: Im 1er Komplement.