笔试时候遇到的问题,在此作一下记录。spa
1.if语句中的布尔变量与零值做比较
不能用布尔变量与true,false,1,0直接做比较。布尔变量类型的语义是:零值为“假”,任何非零值都表示“真”。由于true的值并无惟一的标准,所以不能用布尔变量与它直接进行比较。
假设布尔变量为flag,那么它与零值进行比较时if语句应该是
if(flag)\\表示若是flag为真
if(!flag)\\表示若是flag为假
不能用如下的这些方法
if(flag==1)
if(flag==true)
if(flag==false)
if(flag!=0) .net
2.if语句中 int 变量与零值做比较指针
整型变量中应该用“==”“!=”直接与零做比较,例如:blog
if(value==0)ip
if(value!=0)变量
不该该用float
if(value)方法
if(!value)im
这样容易被误解为value是布尔变量。笔试
3.if语句中浮点变量与零值做比较
不能将浮点变量用“==” “!=”与任何数字做比较。
float和double类型的变量都有精度限制。应该用“>=”“<=”的形式进行比较。
应为
if((x>=-MIN) && (x<=MIN))
MIN能够是0.00000001。
不能直接
if(x==0.00)
4.if语句中指针变量与零值做比较
指针变量的零值是“空”,所以应该与“NULL”做比较。虽然“NULL”表明0,可是有不一样的意义。
if语句以下:
if(p==NULL)
不一样的形式表明不一样的含义,所以要正确的表达想要表达的意思,应该用正确的方式写代码。
参考:https://blog.csdn.net/xyzbaihaiping/article/details/51124943