我知道EOF
和'\0'
是整数类型,但如果是这样,它们不应该有固定值吗?
我打印了两个,EOF
得-1,'\0'
得0。但这些值是否已修复?
我也有这个
int a=-1;
printf("%d",a==EOF); //printed 1
EOF
和'\0'
的值是否为固定整数?
答案 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)。