c - The value of EOF different for different specifiers? -
this question has answer here:
im using codeblocks.
below program in c:
/*to find value of eof ( end of file ) number */ #include<stdio.h> int main() { printf("the eof value is: %d %5ld",eof, eof); /*when eof specified in %d specifier giving value -1, if given %ld number 4294967295 printed on console?*/ return 0; }
as said in comments of program:
- when eof specified in %d specifier giving value -1, if given %ld number 4294967295 printed on console?
i'm using 64 bit linux os on hp. [ if matters compiler assigning memory ints, floats , longs ]
it's defined (-1)
, it's implicitly int
. correctly shown -1 when printed using %d
. however, passing int
printf()
when long
expected invokes undefined behavior.
what probably happens, system uses 2's complement, 32-bit int
, 64-bit long
, bit pattern (int)-1
same corresponds (long)4294967295
.
Comments
Post a Comment