1

我正在使用代码块。

下面是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 操作系统。[如果编译器为整数、浮点数和长整数分配内存很重要]

4

1 回答 1

3

它可能被定义为(-1),所以它隐含地是一个int. 因此,使用 . 打印时正确显示为 -1 %d。但是,在预期a 时传递 aint会调用未定义的行为。printf()long

可能发生的情况是,您的系统使用 2 的补码、32 位int和 64 位long,并且位模式(int)-1与对应于(long)4294967295.

于 2013-08-12T18:08:34.453 回答