为什么测试int的符号被称为"草率代码"在glibc参考?

时间:2016-11-21 09:39:04

标签: c glibc getc

glibc reference中我们找到了这样的词:

  

......像

这样的草率代码
{
  int c;
  ...
  while ((c = getc (fp)) < 0)
    ...
}
     

必须重写......

为什么测试int的符号被称为&#34;草率代码&#34;在glibc参考?

1 个答案:

答案 0 :(得分:2)

这与使用WEOF宏有关。正如reference中已经提到的那样,(强调我的

  

WEOF不必与EOF具有相同的价值,与EOF 不同,它还需要为负。 [。 ..]

因此,检查< 0可能是一个错误的决定,严格来说,应该根据WEOF本身的返回值进行检查。