找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 159|回复: 0

考查编程内功:与零值的比较

[复制链接]

210

主题

371

回帖

0

积分

管理员

积分
0
发表于 2013-10-27 21:30:35 | 显示全部楼层 |阅读模式
问题:分别给出BOOL, int, float, 指针变量与“零值”比较的if语句(假设变量名为var)。
解答:BOOL型变量:if(!var)
int型变量:if(var == 0)
float型变量:const float EPSINONS = 0.00001; if((x >= -EPSINON) && (x <= EPSINON))
指针变量:if(var == NULL)
剖析:考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。

一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变 量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL), 这是一种很好的编程习惯。

浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。如果写成if (x == 0.0),则判为错,得0分。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 04:40 , Processed in 0.081805 second(s), 20 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表