C中EOF和''的值是什么
我知道 EOF
和 ''
是整数类型,但如果是这样,它们不应该有一个固定值吗?
I know that EOF
and ''
are of type integers, but if so shouldn't they have a fixed value?
我打印了两者,EOF
得到 -1,''
得到 0.但是这些值是固定的吗?
I printed both and got -1 for EOF
and 0 for ''
. But are these values fixed?
我也有这个
int a=-1;
printf("%d",a==EOF); //printed 1
EOF
和 ''
的值是固定整数吗?
Are the value for EOF
and ''
fixed integers?
推荐答案
EOF
是一个宏,它扩展为一个整数常量表达式,类型为 int
和一个依赖于实现的负数值但很常见 -1.
EOF
is a macro which expands to an integer constant expression with type int
and an implementation dependent negative value but is very commonly -1.
''
是 C++ 中值为 0 的 char
和 C 中值为 0 的 int
.
''
is a char
with value 0 in C++ and an int
with the value 0 in C.
printf("%d",a==EOF);
导致1
的原因是你没有赋值EOF
到 a
.相反,您检查 a
是否等于 EOF
并且因为这是真的 (a == -1 == EOF
) 它打印了 1
.
The reason why printf("%d",a==EOF);
resulted in 1
was because you didn't assign the value EOF
to a
. Instead you checked if a
was equal to EOF
and since that was true (a == -1 == EOF
) it printed 1
.
相关文章