对于不同的说明者,EOF的值是不同的?

时间:2013-08-12 18:02:02

标签: c formatting

  

我正在使用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;
}

正如我在该计划的评论中所说:

  • 当在%d说明符中指定EOF时,它将值设为-1,但如果为          给%ld然后在控制台上打印一个数字4294967295

我在HP上使用64位Linux操作系统。 [如果编译器对为int,float和longs分配内存很重要]

1 个答案:

答案 0 :(得分:3)

它可能被定义为(-1),所以它隐含地是int。因此,使用%d打印时,它会正确显示为-1。但是,如果需要int,则将printf()传递给long会调用未定义的行为。

可能发生的是,您的系统使用2的补码,32位int和64位long以及{{1}的位模式}与(int)-1对应的内容相同。