零值比较(bool,int,float,指针变量与零值比较if语句)

零值比较(bool,int,float,指针变量与零值比较if语句)

ID:24142807

大小:57.00 KB

页数:3页

时间:2018-11-12

零值比较(bool,int,float,指针变量与零值比较if语句)_第1页
零值比较(bool,int,float,指针变量与零值比较if语句)_第2页
零值比较(bool,int,float,指针变量与零值比较if语句)_第3页
资源描述:

《零值比较(bool,int,float,指针变量与零值比较if语句)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这是程序员面试的一道常见题,也是个C++基础问题。若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0比较吗,直接拿出来比就是了,其实非也。下文引自google搜索结果,出处不详,高手可以无视,菜菜留下,记得做好笔记。首先给个提示:题目中要求的是零值比较,而非与0进行比较,在C++里“零值”的范围可就大了,可以是0,0.0,FALSE或者“空指针”。①int型变量n与“零值”比较的if语句就是:[cpp]viewplaincopyprint?1.if ( n == 0 )  if(n==0)[cpp]viewplaincopyprint?1.if ( n 

2、!= 0 )  if(n!=0)如下写法均属不良风格.。[cpp]viewplaincopyprint?1.if ( n )  // 会让人误解 n 是布尔变量  if(n)//会让人误解n是布尔变量[cpp]viewplaincopyprint?1.if ( !n   )  if(!n)②请写出BOOLflag与“零值”比较的if语句。根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE的值究竟是什么并没有统一的标准。例如VisualC++将TRUE定义为1,而VisualBasic则将TRUE定义为-1。所以我们不可以将布尔变量

3、直接与TRUE、FALSE或者1、0进行比较。标准答案:[cpp]viewplaincopyprint?1.if ( flag )  if(flag)[cpp]viewplaincopyprint?1.if ( !flag )  if(!flag)如下写法均属不良风格。[cpp]viewplaincopyprint?1.if (flag == TRUE)   if(flag==TRUE)[cpp]viewplaincopyprint?1.if (flag == 1 )   if(flag==1)[cpp]viewplaincopyprint?1.if (flag == FALS

4、E)   if(flag==FALSE)[cpp]viewplaincopyprint?1.if (flag == 0)   if(flag==0)③请写出floatx与“零值”比较的if语句。千万要留意,无论是float还是double类型的变量,都有精度限制,都不可以用“==”或“!=”与任何数字比较,应该设法转化成“>=”或“<=”形式。(为什么?文章之后有详细的讨论,可参考)假设浮点变量的名字为x,应当将    if(x==0.0)    //隐含错误的比较    转化为    if((x>=-EPSINON)&&(x<=EPSINON))    其中EPSINON是允

5、许的误差(即精度)。标准答案示例:[cpp]viewplaincopyprint?1.const float EPSINON = 0.00001;  2.if ((x >= - EPSINON) && (x <= EPSINON){}  constfloatEPSINON=0.00001;if((x>=-EPSINON)&&(x<=EPSINON){}如下是错误的写法。[cpp]viewplaincopyprint?1.if (x == 0.0)   2.if (x != 0.0)   if(x==0.0)if(x!=0.0)④请写出char*p与“零值”比较的if语句。标准答

6、案:[cpp]viewplaincopyprint?1.if (p == NULL)  2.if (p != NULL)  if(p==NULL)if(p!=NULL)如下写法均属不良风格。[cpp]viewplaincopyprint?1.if (p == 0)         // 容易让人误解p是整型变量  1.if (p != 0)   2.if (p)                 // 容易让人误解p是bool型变量  3.if (!p)   if(p==0)//容易让人误解p是整型变量if(p!=0)if(p)//容易让人误解p是bool型变量if(!p)以上的

7、不良风格很多都能通过编译,但是语句并不能很好的表达与零值进行比较的逻辑依据。一般的,如果想用if语句判断一个变量的真假,应该直接使用if(var)、if(!var),表明此if语句的功能为“逻辑”判断;如果想用if语句判断一个数值型变量(short、int、long等),应该用if(var==0),表明此if语句是将变量与0进行“数值”上的比较;而检视指针是否为空则适宜用if(var==NULL),这是一种很好的编程习惯。浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。