我正在使用Codeblocks。
以下是C:
中的程序/*to find the value of EOF ( End Of the File ) Number */
#include<stdio.h>
int main()
{
printf("The EOF value is: %d %5ld",EOF, EOF);
/*when EOF specified in %d specifier it is giving the value as -1, but if its
given %ld then a number 4294967295 is printed on the console?*/
return 0;
}
正如我在该计划的评论中所说:
我在HP上使用64位Linux操作系统。 [如果编译器对为int,float和longs分配内存很重要]
答案 0 :(得分:3)
它可能被定义为(-1)
,所以它隐含地是int
。因此,使用%d
打印时,它会正确显示为-1。但是,如果需要int
,则将printf()
传递给long
会调用未定义的行为。
可能发生的是,您的系统使用2的补码,32位int
和64位long
以及{{1}的位模式}与(int)-1
对应的内容相同。