什么是EOF的值和'\ 0'在C中

时间:2011-01-16 14:46:19

标签: c++ c null eof

我知道EOF'\0'是整数类型,但如果是这样,它们不应该有固定值吗?

我打印了两个,EOF得-1,'\0'得0。但这些值是否已修复?

我也有这个

int a=-1;

printf("%d",a==EOF); //printed 1

EOF'\0'的值是否为固定整数?

5 个答案:

答案 0 :(得分:49)

EOF是一个宏,它扩展为一个整型常量表达式,类型为int,依赖于实现的负值,但通常为-1。

'\0'char,C ++中的值为0,C中的值为int

printf("%d",a==EOF);导致1的原因是您没有将值EOF分配给a。相反,您检查了a是否等于EOF,因为这是真的(a == -1 == EOF),所以它打印1

答案 1 :(得分:26)

答案 2 :(得分:5)

'\ 0'始终为空字符,或0. EOF取决于编译器,但通常为-1,并且始终是unsigned char无法容纳的值。不要依赖EOF的价值,因为它可以改变。总是做x == EOF而不是x == -1。 '\ 0'的值始终为0.您可以依赖它。

答案 3 :(得分:0)

是的,他们是。 '\0'具有相同的NULL值,即0(但它们表示不同的东西),而EOF通常为-1。

printf("%d",a==EOF); //printed 1

在这种情况下,你问:是= = EOF?如果它是打印1(这是真的),它不打印0(这是假的)。

答案 4 :(得分:-1)

'\ 0'始终为0

EOF依赖于编译器

最常见的是-1(以gcc& g ++表示-1)。