首页 > 试题广场 >

分别给出BOOL,int,float,指针变量 与“零值”比

[问答题]
分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)
推荐
【解答】   
BOOL型变量:if(!var)   
int型变量: if(var==0)   
float型变量:   
const float EPSINON = 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分。  
编辑于 2015-12-12 12:02:12 回复(6)
答案的BOOL类型的判断可读性差,根据Google C++编程规范,变量在左,常量在右,应该写成: 
if (var == false) {
    ...
}

发表于 2017-03-05 17:16:59 回复(2)
int 那个 应该这样写 if(0 == var) 原因你们自己去理解
发表于 2017-08-10 23:31:32 回复(2)
bool :if(var); int :if(0==var); float:if(fabs(var)<1e-3)
发表于 2015-12-11 23:20:05 回复(0)
浮点数不精确,不可以使用==,应该使用<= && >=
发表于 2021-05-15 14:40:03 回复(0)
float double 存储时候,存储的并不是精确数。所以并不能跟0直接比较。需要一个范围。
发表于 2019-06-21 00:47:38 回复(0)
float小数点后有效精度为6位,如果设置EPSINON = 0.000001更准确。当然,实际应用中可以根据需要的精度来设置·
发表于 2018-04-04 10:35:18 回复(0)
bool  型 if(!var);
int 型  if(var==0);
指针 if(var==NULL)
float 型 const float epsilon=0.00001;
if(var<epsilon&&var>epsilon*(-1.0))
发表于 2017-07-14 11:01:22 回复(0)
float需要加epsinon
编辑于 2015-11-22 18:41:26 回复(1)
与float 进行零值的比较 const a=0.00001; if((var>=-a)&&(var<=a))
发表于 2021-03-10 20:01:30 回复(0)
浮点数不精确,不可以使用==,应该使用<= + >=
发表于 2021-02-19 12:17:15 回复(0)
bool,if(!var)。int,if(var==0)。float,if((var=>0) && (var =< 0))
编辑于 2020-08-31 23:04:47 回复(0)
<p>bool if(!var)</p><p>int if(var==0)</p><p>float if(var&gt;-0.00001f&amp;var&lt;0.00001f)</p>
发表于 2020-07-13 23:02:58 回复(0)
//int
if(0 == val)
//BOOL
if(!val)
    
//ptr
if(val == NULL)
    
//float
if(abs(val) < 1e^-3)
const float EPSINON = 0.0001;
if((val >= -EPSINON)&&(val <= EPSINON))

发表于 2020-03-25 10:21:04 回复(0)

bool var = true;

if (var);

int var = 0;

if (var == 0);

float var = 0

const float EPSION = 0.000001

if (var>= -EPSION && var <= EPSION)

编辑于 2019-12-29 19:58:31 回复(0)
float类型的,直接用if(var == 0)就可以判断啊
发表于 2019-09-21 13:29:55 回复(0)
布尔:if(!var) int: if(var == 0) float: if((var >= -0.000001) && (var <= 0.000001) ) 指针:if(var == NULL)
编辑于 2019-03-21 17:23:35 回复(0)
为什么int型用 if(0==var) 更好呀?
发表于 2018-12-17 11:26:46 回复(1)
bool真假,int==0,float有个很小值范围,指针NULL
发表于 2018-11-29 09:41:13 回复(0)
分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)
BOOL:if (!var);
int: if(var == 0);
float:const float EPSINON = 0.000001;//根据精确度来设定
if((var >= - EPSINON) &&(var <= EPSINON));
指针:if(var == NULL);
发表于 2018-07-23 15:04:58 回复(0)
判断的时候 if(NULL != var)和if(var != NULL)前者更好, 原因:如果忘记了写!号,对于if(NULL=var)编译器就会报错,这样就能够更容易的发现问题,因为常量不能被赋值。而if(var == NULL)编译器不会报错,就不容易找到错误。
发表于 2018-03-14 14:11:00 回复(0)