Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6379133
  • 博文数量: 579
  • 博客积分: 1548
  • 博客等级: 上尉
  • 技术积分: 16634
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-12 15:29
个人简介

http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/

文章分类

全部博文(579)

文章存档

2018年(18)

2015年(91)

2014年(159)

2013年(231)

2012年(80)

分类: C/C++

2013-03-13 16:33:31

函数名与返回值类型在语义上不可冲突。
违反这条规则的典型代表就是C 语言标准库函数getchar 。几乎没有一部名著没有提到
getchar 函数,因为它实在太经典,太容易让人犯错误了。所以,每一个有经验的作者都
会拿这个例子来警示他的读者,我这里也是如此:
char c;
c=getchar();
if(EOF == c)
{

}
按照getchar 名字的意思,应该将变量 c 定义为char 类型。但是很不幸,getchar 函数的
返回值却是int 类型,其原型为:
int getchar(void) ;
由于c 是char 类型的,取值范围是[-128,127], 如果宏EOF 的值在char 的取值范围之外,
EOF 的值将无法全部保存到c 内,会发生截断,将 EOF 值的低8 位保存到c 里。这样if 语
句有可能总是失败。这种潜在的危险,如果不是犯过一次错,肯怕很难发现。
阅读(2698) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~

gfree_wind2013-03-14 12:34:42

确实是很失败的命名。